如何将代理添加到 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的使用

python爬虫之BeautifulSoup

python爬虫如何定位

python3: 爬虫---- urllib, beautifulsoup

爬虫相关