如何将代理添加到 BeautifulSoup 爬虫
Posted
技术标签:
【中文标题】如何将代理添加到 BeautifulSoup 爬虫【英文标题】:How to add proxies to BeautifulSoup crawler 【发布时间】:2012-09-09 23:54:43 【问题描述】:这些是python爬虫中的定义:
from __future__ import with_statement
from eventlet.green import urllib2
import eventlet
import re
import urlparse
from bs4 import BeautifulSoup, SoupStrainer
import sqlite3
import datetime
如何将旋转代理(每个打开的线程一个代理)添加到使用 BeautifulSoup 的递归爬虫?
如果我使用 Mechanise 的浏览器,我知道如何添加代理:
br = Browser()
br.set_proxies('http':'http://username:password@proxy:port',
'https':'https://username:password@proxy:port')
但我想具体了解 BeautifulSoup 需要什么样的解决方案。
非常感谢您的帮助!
【问题讨论】:
【参考方案1】:请注意,现在有一个不太复杂的解决方案,分享here:
import requests
proxies = "http": "http://10.10.1.10:3128",
"https": "http://10.10.1.10:1080"
requests.get("http://example.org", proxies=proxies)
然后从请求响应中照常做你的beautifulsoup。
因此,如果您想要具有不同代理的单独线程,您只需为每个请求调用不同的字典条目(例如,从字典列表中)。
当您现有的包使用已经是 requests / bs4 时,这似乎更直接实施,因为它只是在您现有的 requests.get()
调用上添加的额外 **kwargs
。您不必为每个线程初始化/安装/打开单独的 urllib 处理程序。
【讨论】:
【参考方案2】:看看 BeautifulSoup 使用 HTTP 代理的例子
http://monzool.net/blog/2007/10/15/html-parsing-with-beautiful-soup/
【讨论】:
以上是关于如何将代理添加到 BeautifulSoup 爬虫的主要内容,如果未能解决你的问题,请参考以下文章
python 爬虫proxy,BeautifulSoup+requests+mysql 爬取样例
Python爬虫之BeautifulSoup和requests的使用