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用了。

目录
相关文章
|
数据采集 中间件 Python
Python爬虫:scrapy管理服务器返回的cookie
Python爬虫:scrapy管理服务器返回的cookie
439 0
|
3月前
|
存储 数据采集 XML
使用Crawler实例进行网页内容抓取
使用Crawler实例进行网页内容抓取
|
7月前
|
数据采集 中间件 Python
Scrapy爬虫:利用代理服务器爬取热门网站数据
Scrapy爬虫:利用代理服务器爬取热门网站数据
|
2月前
|
数据采集 安全 定位技术
Burpsuite Spider爬虫功能
Burpsuite Spider爬虫功能
|
7月前
|
Python
scrapy模拟登录
scrapy模拟登录
41 0
|
数据采集 JavaScript 前端开发
深入网页分析:利用scrapy_selenium获取地图信息
网页爬虫是一种自动获取网页内容的技术,它可以用于数据采集、信息分析、网站监测等多种场景。然而,有些网页的内容并不是静态的,而是通过JavaScript动态生成的,例如图表、地图等复杂元素。这些元素往往需要用户的交互才能显示出来,或者需要等待一定时间才能加载完成。如果使用传统的爬虫技术,如requests或urllib,就无法获取到这些元素的内容,因为它们只能请求网页的源代码,而不能执行JavaScript代码。我们可以使用scrapy_selenium这个工具,它结合了scrapy和selenium两个强大的库,可以实现对动态网页的爬取。
170 0
深入网页分析:利用scrapy_selenium获取地图信息
|
数据采集 JSON 数据格式
Python爬虫:Scrapy的get请求和post请求
Python爬虫:Scrapy的get请求和post请求
486 0
Python爬虫:Scrapy的get请求和post请求
|
数据采集 数据库 Python
Scrapy爬取豆瓣
使用Scrapy爬取豆瓣Top250数据
|
数据采集 Web App开发 安全
第76天:Scrapy 模拟登陆
第76天:Scrapy 模拟登陆
141 0
第76天:Scrapy 模拟登陆
|
数据采集 存储 JSON
Scrapy爬取makepolo网站数据深入详解
题记 之前对爬虫只是概念了解多,实战少。知道网上流行的有号称免费的八爪鱼等(实际导出数据收费)。 大致知道,所有爬虫要实现爬取网页信息,需要定义正则匹配规则。
249 0
Scrapy爬取makepolo网站数据深入详解