获取随机User-Agent和随机ip代理

本文介绍了如何在Scrapy中获取和设置不断变化的User-Agent以应对反爬策略,推荐使用fake-useragent库,并讲解了在Scrapy的downloader middleware中实现随机User-Agent的方法。同时,文章还提及了如何在Scrapy中设置代理,建议通过获取西刺网等平台的代理数据并随机使用来提高爬虫的隐蔽性。
摘要由CSDN通过智能技术生成

如何获取不断变化的 User-Agent

推荐我的个人博客: blog.wuzhenyu.com.cn

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

比如,firefox 浏览器中的 user agent 可能为 Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:54.0) Gecko/20100101 Firefox/54.0,其他浏览器的 user agent 都是不一样的。那么如何随机更换 user agent 呢。

如果我们能获取到所有可能出现的 user agent,那么我们只需要随机从这些 user agent 列表中取一条就可以了。正好,有人已经帮我们实现了这个事情。在 github 上搜索 useragent,选择 fake-useragent,作者维护了一个可变的user agent 列表,地址为 https://fake-useragent.herokuapp.com/browsers/0.1.7,这个地址是可以根据版本变化的,以前版本的链接可能已经无法访问。这里列出了所有作者维护的 user-agent(感谢作者和开源的贡献,给我们提供的方便)。那么,我们通过获取到这些 user-agent,然后随机的从这个列表中取 user-agent 就可以。

这当然是一种方法,但既然已经有了 fake-useragent,那么我们就不需要这么做了。大家也可以看帮助文档中的使用方法。

# 安装 fake-useragent
pip install fake-user
  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,以下是一个可以爬取京东商品信息并进行可视化的Python爬虫示例代码,其中包括了设置代理和随机User-Agent的代码: ```python import requests from bs4 import BeautifulSoup import pandas as pd import matplotlib.pyplot as plt from fake_useragent import UserAgent url = "https://search.jd.com/Search?keyword=Python&enc=utf-8&wq=Python&pvid=74c9e6f6d2c14a4aaf3d2c3fb0c2b6b7" # 设置代理和随机User-Agent proxies = { 'http': 'http://127.0.0.1:1080', 'https': 'http://127.0.0.1:1080' } headers = { 'user-agent': UserAgent().random } response = requests.get(url, headers=headers, proxies=proxies) soup = BeautifulSoup(response.text, "html.parser") product_list = [] for item in soup.select('li.gl-item'): p_name = item.select('.p-name em')[0].text.strip() p_price = item.select('.p-price i')[0].text.strip() product_list.append({'name': p_name, 'price': float(p_price)}) df = pd.DataFrame(product_list) df = df.drop_duplicates() # 去重 df = df.sort_values(by='price', ascending=False) # 按价格排序 # 可视化 plt.figure(figsize=(10, 8)) plt.bar(df['name'], df['price']) plt.xticks(rotation=90) plt.xlabel('商品名称') plt.ylabel('价格(元)') plt.title('京东Python商品价格分布') plt.show() ``` 该代码引入了fake_useragent库,用于生成随机User-Agent,可以有效避免被爬虫机制识别。同时,设置了一个本地代理,可以使用代理IP来访问京东,增加爬取成功的几率。 需要注意的是,代理IP的获取和使用需要谨慎,不要使用不可靠的代理,否则可能会导致爬取失败或者被封禁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫步旅人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值