scrapy 爬取 useragent

简介: useragentstring.com 网站几乎廊括了所有的User-Agent,刚学了scrapy,打算那它练手,把上面的 user-agent 爬取下来。本文只爬取常见的 FireFox, Chrome, Opera, Safri, Internet Explorer一、创建爬虫项目1.

useragentstring.com 网站几乎廊括了所有的User-Agent,刚学了scrapy,打算那它练手,把上面的 user-agent 爬取下来。

本文只爬取常见的 FireFox, Chrome, Opera, Safri, Internet Explorer

一、创建爬虫项目

1.创建爬虫项目useragent
$ scrapy startproject useragent
2.进入项目目录
$ cd useragent
3.生成爬虫文件 ua

这一步不是必须的,不过有了就方便些

$ scrapy genspider ua useragentstring.com

二、编辑 item 文件

# useragent\items.py
import scrapy

class UseragentItem(scrapy.Item):
    # define the fields for your item here like:
    ua_name = scrapy.Field()
    ua_string = scrapy.Field()

三、编辑爬虫文件

# useragent\spiders\ua.py 

import scrapy

from useragent.items import UseragentItem

class UaSpider(scrapy.Spider):
    name = "ua"
    allowed_domains = ["useragentstring.com"]
    start_urls = (
        'http://www.useragentstring.com/pages/useragentstring.php?name=Firefox',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Internet+Explorer',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Opera',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Safari',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Chrome',
    )

    def parse(self, response):
        ua_name = response.url.splite('=')[-1]
        for ua_string in response.xpath('//li/a/text()').extract():
            item = UseragentItem()
            item['ua_name'] = ua_name
            item['ua_string'] = ua_string.strip()
            yield item

四、运行爬虫

通过参数-o,控制爬虫输出为 json 文件

$ scrapy crawl ua -o item.json

结果如图:
img_adb3a887d347bd8cfa50eadf78672d36.png

看起来没有得到想要的结果,注意到那个robot.txt。我猜测可能是网站禁止爬虫

猜的对不对先不管,先模拟浏览器再说,给所有的 request 添加 headers:

# useragent\spiders\ua.py 

import scrapy

from useragent.items import UseragentItem

class UaSpider(scrapy.Spider):
    name = "ua"
    allowed_domains = ["useragentstring.com"]
    start_urls = (
        'http://www.useragentstring.com/pages/useragentstring.php?name=Firefox',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Internet+Explorer',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Opera',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Safari',
        'http://www.useragentstring.com/pages/useragentstring.php?name=Chrome',
    )
    
    # 在所有的请求发生之前执行
    def start_requests(self):
        for url in self.start_urls:
            headers = {"User-Agent": "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; AcooBrowser; .NET CLR 1.1.4322; .NET CLR 2.0.50727)"}
            yield scrapy.Request(url, callback=self.parse, headers=headers)

    def parse(self, response):
        ua_name = response.url.split('=')[-1]
        for ua_string in response.xpath('//li/a/text()').extract():
            item = UseragentItem()
            item['ua_name'] = ua_name
            item['ua_string'] = ua_string.strip()
            yield item

在运行,OK了!
效果图如下:
img_814b25884642ea0871f4ac377d220cc3.png

好了,以后不愁没有 User Agent用了。

目录
相关文章
一个免费功能强大的谷歌翻译api
分享一个免费且功能强大谷歌翻译api
11052 2
一个免费功能强大的谷歌翻译api
|
3月前
|
机器学习/深度学习 人工智能 运维
运维告警别乱飞了!AI智能报警案例解析
运维告警别乱飞了!AI智能报警案例解析
422 0
|
3月前
|
缓存 Cloud Native 算法
《云原生架构下的智能物流调度系统故障排查与优化》
本文围绕某智能物流调度系统在云原生架构下的故障排查与优化展开。该系统基于Kubernetes、Istio等构建,业务扩张后高峰时段频发订单提交失败、调度信息延迟等问题。经分层排查,发现根源在于应用层连接池配置不合理、服务网格路由与负载均衡策略缺陷、资源调度及云边通信瓶颈等多层级协同失效。通过应用层优化连接池与算法拆分、服务网格重构路由规则与提升同步效率、资源层动态调整配置与扩容、云边协同增强自治能力等措施,系统性能与业务指标显著改善。
100 0
|
4月前
|
人工智能 云栖大会
9.24-9.26,与魔搭,云栖见!
2025 杭州·云栖大会,来了!9月24日至26日,杭州·云栖小镇
114 0
|
机器学习/深度学习 数据采集 人工智能
《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
这篇文章详细介绍了如何使用线性回归算法实现波士顿房价预测任务,包括数据读取、形状变换、集划分、归一化处理、模型设计、前向计算以及损失函数的计算等步骤,并提供了相应的Python代码实现。
 《零基础实践深度学习》基于线性回归实现波士顿房价预测任务1.3.3
|
11月前
|
调度 vr&ar 图形学
【干货】实时云渲染与本地渲染的技术对比
实时渲染分为本地渲染和云渲染两种模式。随着XR技术在建筑、教育、医疗等领域的广泛应用,越来越多企业选择云渲染以提升效率、降低成本并增强协同能力。本文对比分析了这两种渲染模式的优劣,并重点介绍了实时云渲染方案具备便捷性、高效资源调度、超低时延网络、数据安全、终端轻量化及跨系统运行等优势,满足多种XR应用场景需求。
530 13
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
本篇将带你实现一个简易日历应用,显示当前月份的日期,并支持选择特定日期的功能。用户可以通过点击日期高亮选中,还可以切换上下月份,体验动态界面的交互效果。
178 12
「Mac畅玩鸿蒙与硬件35」UI互动应用篇12 - 简易日历
|
计算机视觉
HDR的主要标准有哪些?
HDR(高动态范围)技术通过提供更广阔的亮度范围和丰富的色彩细节,显著提升图像质量,使电影、图片和游戏画面更加逼真。相比SDR,HDR拥有更宽的色域、更高的色深和动态范围,支持多种行业标准如HDR10、Dolby Vision、HDR10+、HLG和HDR Vivid,为用户带来更接近真实的视觉体验。
|
固态存储
计算机硬件更换硬件
【7月更文挑战第27天】
804 6
|
机器学习/深度学习 编解码 算法
ADA-YOLO | YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
ADA-YOLO | YOLOv8+注意力+Adaptive Head,相对YOLOv8,mAP提升3%+118FPS
550 0