scrapy获取a标签的连接_Scrapy爬虫框架

scrapy获取a标签的连接_Scrapy爬虫框架_第1张图片

来源:CSDN

作者:未来的地中海

原文链接:https://blog.csdn.net/qq_45687410/article/details/109735281?utm_source=app


import scrapy  # 导入scrapy# 创建爬虫类 并且继承自scrapy.Spider -->  最基础的类  另外几个各类都是继承自这个类class ProxySpider(scrapy.Spider):    name = 'proxy'  # 爬虫名字--> 必须唯一    allowed_domains = ['cn-proxy.com']  # 允许采集的域名    start_urls = [f'http://cn-proxy.com/{page}' for page in range(1,3685)]  # 开始采集的网站    # start_urls = ['http://cn-proxy.com/' for page in range(1, 3685)]  # 开始采集的网站    # 解析响应数据 提取数据 或者网址等 response 就是网页源码    def parse(self, response):        #提取数据        #提取ip 和 port        selectors = response.xpath('//tr')  #选择所有的tr标签        #循环遍历tr标签下的td标签        for selector in selectors:            ip = selector.xpath('./td[1]/text()').get()  #(单个) .表示在当前节点下继续选择 和 selectors            port = selector.xpath('./td[2]/text()').get()            # ip = selector.xpath('./td[1]/text()').getall()  #(多个) .表示在当前节点下继续选择 和 selectors            # port = selector.xpath('./td[2]/text()').get()            # ip = selector.xpath('./td[1]/text()').extract_first()  # .表示在当前节点下继续选择 和 selectors            # port = selector.xpath('./td[2]/text()').extract_first()            # print(ip,port)            items = {
                      "ip":ip                "port":port            }            yield  items        #翻页操作  寻找翻页的网址标签        next_page = response.xpath('//a[@]/@href').get()        if next_page:            print(next_page)            #拼接网址            # next_url = "http://cn-proxy.com/" + next_page            next_url = response.urljojin(next_page)            #发出请求  Requext calback 是回调函数 就是将请求得到的响应交给自己处理            yield  scrapy.Request(next_url,callback=self.parse)  #生成器  递归
[Scrapy入门]    *scrapy是框架 类似于车子 原则上来说会开车就行 但是作为爬虫工程师来说还得会修车 改装    *才用异步框架 实现高效率的网络采集(并发等)    *最强大的爬虫框架 没有之一    [Scrapy安装]    * pip install scrapy -> VC++14.0 Twisted(关键字)        解决方法:离线安装 pip install xxx.whl    *scrapy bench 测试是否真正安装成功      报错 ———> win32        解决方法:pip install pywin32    *报错 automat 20.2.0 has requirement attrs>=19.2.0, but you'll have attrs 18.1.0 which is incompatible.        解决方法 pip install attrs==19.3    pip install scrapy[Scrapy入门实战案例]    采集目标:ip代理  包括 ip port        1 新建项目    scrapy startproject xxxxSpider(项目名字)        2 创建爬虫    scrapy genspider xxxx(爬虫名字)   xxxxxx.com(域名)                注意:            *爬虫名字不要和项目名字一样            *网站域名是允许爬虫采集的域名                - baidu.com   zhihu.com                         [解释爬虫文件]            import scrapy #导入scrapy                                              # 创建爬虫类 并且继承自scrapy.Spider -->  最基础的类  另外几个各类都是继承自这个类            class ProxySpider(scrapy.Spider):                name = 'proxy'  # 爬虫名字--> 必须唯一                allowed_domains = ['cn-proxy.com']  # 允许采集的域名                start_urls = ['http://cn-proxy.com/']  # 开始采集的网站                # 解析响应数据 提取数据 或者网址等 response 就是网页源码                def parse(self, response):                    pass    3 分析网站        *提取数据            - 正则表达式(基础 必会 难掌握)            - XPath --> 从HTML中提取数据            - CSS --> 从HTML中提取数据                        - response.xpath(xpath语法).get()            - get() 是得到一个元素            -getall() 是多个元素    4 运行爬虫        scrapy crawl xxxx(爬虫名字)                Request()发出请求 类似于requests.get()        callvack 是将发出去的请求得到的响应还交给自己处理        注意:回调函数不要写() 只写函数名                        执行并保存数据        scrapy crawl xxxx(爬虫名字) -o xx(文件名).json         JSON格式        scrapy crawl xxxx(爬虫名字) -o xx(文件名).csv          csv格式
scrapy获取a标签的连接_Scrapy爬虫框架_第2张图片

扫码关注我们

获取更多信息

你可能感兴趣的:(scrapy获取a标签的连接)