日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Scrapy框架的学习(5.scarpy实现翻页爬虫,以及scrapy.Request的相关参数介绍)

發布時間:2024/9/30 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scrapy框架的学习(5.scarpy实现翻页爬虫,以及scrapy.Request的相关参数介绍) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 創建爬蟲項目 :?scrapy startporject tencent?

? ?然后進入到項目中:?cd tencent

? ?創建爬蟲:scrapy genspider tencent_spider tencent.com

2. 在開始寫代碼之前,有些知識要知道

? ?

? ?可以找到頁面上的下一頁的url地址,然后用解析函數去處理,解析函數可以是當前函數,類似于函數遞歸

? 通過在Request中指定callback參數來確定哪個解析函數來解析

??

3. 爬蟲的代碼 。 tencent_spider.py? ? ?爬取騰訊招聘的網站。

# -*- coding: utf-8 -*- import scrapyclass TencentSpiderSpider(scrapy.Spider):name = 'tencent_spider'allowed_domains = ['tencent.com']start_urls = ['https://hr.tencent.com/position.php']def parse(self, response):tr_list = response.xpath("//table[@class='tablelist']//tr")[1:-1]for tr in tr_list:item = {}item["position"] = tr.xpath("./td/a/text()").extract_first()item["category"] = tr.xpath(".//td[2]/text()").extract_first()item["date"] = tr.xpath(".//td[5]/text()").extract_first()yield item# 找到下一頁的url地址next_url = response.xpath("//a[@id='next']/@href").extract_first()if next_url != "javascript:;":next_url = "https://hr.tencent.com/"+next_urlyield scrapy.Request(next_url,# callback 指定傳入的url交給那個解析函數去處理callback=self.parse)

? ?開啟pipeline :?

? ?在pipelines.py里面寫上打印,先不保存,看打印的結果? ?

class TencentPipeline(object):def process_item(self, item, spider):print(item)return item

? 運行爬蟲框架:?scrapy crawl tencent_spider

? ?可以看到結果不斷打印出來:??

? ?

可以在pipelines進行相應的保存代碼的編寫

4.? calkback參數:當callback參數指定解析函數時,

? ? ??自已可以在爬蟲中定義解析函數

? ? ?meta: 兩個解析函數之間傳遞數據

? ? 例如:

def parse(self,response):"""其他的先省略,主要看下面的參數傳遞"""yield scrapy.Request(next_url,# callback 指定傳入的url交給那個解析函數去處理callback=self.parse,meta={"item": item})"""如果還有一解析函數,數據就通過meta傳遞過來"""def parese1(self,response):"""可以直接通過鍵取出里面的值"""response.meta["item"]

? dont_filter: 在Scrapy中默認請求是會去重的,請求過的url不會再請求?

? ? ? ? ? ? ? ? ? ? ?想要不去重的話? ,就設置為True

? ? ? ? ? ? ? ? ? ? 如果請求的頁面上的數據會根據時間的變化會更新,這時候就要這個改變參數

總結

以上是生活随笔為你收集整理的Scrapy框架的学习(5.scarpy实现翻页爬虫,以及scrapy.Request的相关参数介绍)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。