User-Agent
随机列表
- 从网上找一些UserAgent
- 当到列表中,然后使用random返回一个就可以了
模块返回
- 配合
fake_useragent
,直接返回一个随机UserAgent
from random import choice
from fake_useragent import UserAgent
def main_head():
# 使用 random 中的 choice 方法,随机获取其中的一个 User-Agent
head = {"User-Agent": choice(herders)}
return head
def random_ua():
ua = UserAgent()
# ua.firefox # 输出 firefox 中的一个随机的 useragent
user_agent = {"User-Agent":str(ua.random)}
return user_agent
main_head()
random_ua()
IP代理
如果在公司,最好是购买代理,但是我们自己处理的时候,从网上抓取一些代理测试就OK了。
- 之前说过自己构建代理池的,也是我们自己从网上抓取IP
- 这里就详细说下怎么抓取代理
- 代理的网站是有很多的,和其他的对比,西刺反倒有些不稳定
- 我们在保存代理之前,最好还是
测试一下
import requests
from lxml import etree
from ua import random_ua
class XiCi():
def __init__(self):
self.base_url = "http://www.xicidaili.com/nn/{}"
self.num = int(input("请输入抓取页数: "))
self.header = random_ua()
self.proxy = {"http": "122.193.244.238:9999"} # 可以使用
def get_url_list(self):
return [self.base_url.format(page) for page in range(1, self.num)]
def get_html(self, url):
response = requests.get(url, headers=self.header) # proxies = self.proxy
response.encoding = response.apparent_encoding
if response.status_code == 200:
return response.text
print(response.status_code, "无法访问")
def get_item(self, html):
soup_html = etree.HTML(html)
ip_list = soup_html.xpath("//*[@id='ip_list']/tr/td[2]")
port_list = soup_html.xpath("//*[@id='ip_list']/tr/td[3]")
# anonymous_list = soup_html.xpath("//*[@id='ip_list']/tbody/tr/td[5]") 匿名
return ip_list, port_list
def parse_items(self, ip_list, port_list):
for ip, port in zip(ip_list, port_list):
print(ip.text + ":" + port.text)
# 在这里可以在判断当前这个ip使用情况,再有选择性的输出 ==> 随便访问一个网站
def run(self):
for url in self.get_url_list():
html = self.get_html(url)
ip_list, port_list = self.get_item(html)
self.parse_items(ip_list, port_list)
if __name__ == '__main__':
xi_ci = XiCi()
xi_ci.run()
评论区