python使用代理ip——案例

120 阅读1分钟

python爬虫是指使用Python编写的程序,通过网络爬取信息并提取有效数据。它通过模拟浏览器请求,获取网页数据,并通过解析HTML/XML等文档结构,从中提取数据。

Python爬虫常用的库和工具包括:

Requests:用于发送HTTP请求和获取网页数据。 BeautifulSoup:用于解析HTML/XML文档,提取数据。 Scrapy:基于Twisted框架的爬虫框架,可以快速高效地爬取大规模数据。 Selenium:用于模拟浏览器操作,处理JavaScript渲染的网页。 PyQuery:基于jQuery语法的解析库,可以快速方便地提取数据。 Python爬虫可以使用代理IP来解决被封IP的问题,以及提高爬取效率。以下是使用代理IP的Python爬虫案例:

1.使用requests库和代理IP爬取网页内容

import requests

proxy = {'http': 'http://111.230.132.75:3128','https': 'http://111.230.132.75:3128' }

  url =  ' https://www.baidu.com'
response = requests.get(url, proxies=proxy)
print(response.content)

2.使用Scrapy和代理IP爬取网页内容

在Scrapy的settings.py文件中设置代理IP:

DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 110,'myproject.middlewares.ProxyMiddleware': 100,
}

在middlewares.py文件中实现代理IP中间件:

import random

class ProxyMiddleware(object):def process_request(self, request, spider):proxy = self.get_random_proxy()request.meta['proxy'] = proxy
 def get_random_proxy(self):proxy_list = ['http://111.230.132.75:3128','http://118.24.172.165:8118','http://58.218.92.147:8777',# ...]return random.choice(proxy_list)

3.使用pycurl和代理IP爬取网页内容

import pycurl
proxy = 'http://111.230.132.75:3128'
url = 'http://www.example.com'
c = pycurl.Curl()
c.setopt(pycurl.URL, url)
c.setopt(pycurl.PROXY, proxy)
c.setopt(pycurl.USERAGENT, 'Mozilla/5.0')
c.setopt(pycurl.FOLLOWLOCATION, True)
c.setopt(pycurl.MAXREDIRS, 5)
c.setopt(pycurl.CONNECTTIMEOUT, 30)
c.setopt(pycurl.TIMEOUT, 300)
c.setopt(pycurl.NOPROGRESS, False)
c.setopt(pycurl.FAILONERROR, True)
buf = StringIO()
c.setopt(pycurl.WRITEFUNCTION, buf.write)
c.perform()
print(buf.getvalue())

4.使用Selenium和代理IP爬取网页内容

from selenium import webdriver
from selenium.webdriver.common.proxy import Proxy, ProxyType

proxy = Proxy({'proxyType': ProxyType.MANUAL,'httpProxy': '111.230.132.75:3128','ftpProxy': '111.230.132.75:3128','sslProxy': '111.230.132.75:3128','noProxy': ''})
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxy.proxy)
driver = webdriver.Chrome(chrome_options=options)
driver.get('http://www.example.com')
print(driver.page_source)

总结

以上是使用代理IP的Python爬虫案例,能够帮助我们更好地爬取网页内容。需要注意的是,在使用代理IP时要选择稳定可靠的代理IP,否则会影响爬取效率。