欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:Scrapy爬取網(wǎng)易新聞

柚子快報(bào)邀請(qǐng)碼778899分享:Scrapy爬取網(wǎng)易新聞

http://yzkb.51969.com/

class FiveSpider(scrapy.Spider): name = “five” start_urls = [“https://news.163.com/”]

# 儲(chǔ)存導(dǎo)航欄模塊的url

model_urls=[]

# 初始化瀏覽器對(duì)象

def __init__(self):

# 初始化瀏覽器

s = Service("D:\Program Files (x86)\chrome\chromedriver.exe")

self.bro = webdriver.Chrome(service=s)

#### ????????1.1 setting.py基本設(shè)置

? ? ? ? ? ? ? ?在setting.py?關(guān)閉ROBOTSTXT\_OBEY和日志信息,填寫USER\_AGENTH和日志信息

ROBOTSTXT_OBEY = False

LOG_LEVEL=‘ERROR’

USER_AGENT=“Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0”

### 2.定位爬取導(dǎo)航欄模塊的URL

? ? ? ? 建立一個(gè)model\_urls來儲(chǔ)存爬取的url,通過F12和xpath定位到模塊的標(biāo)簽,在循環(huán)通過request對(duì)模塊發(fā)起請(qǐng)求

def parse(self, response):

# 定位導(dǎo)航欄各個(gè)模塊的url

li_list=response.xpath('//*[@id="index2016_wrap"]/div[3]/div[2]/div[2]/div[2]/div/ul/li')

# 將需要爬取的導(dǎo)航欄模塊的下標(biāo)儲(chǔ)存在列表中

alist=[1,2]

for index in alist:

model_url=li_list[index].xpath('./a/@href').extract_first()

self.model_urls.append(model_url)

# 向爬取的url發(fā)起請(qǐng)求,并回調(diào)到parse_model()方法中

for url in self.model_urls:

yield scrapy.Request(url=url,callback=self.parse_model)

### 3.獲取新聞URL和標(biāo)題

? ? ? ? 首先通過F12發(fā)現(xiàn)標(biāo)題和響應(yīng)詳情頁(yè)內(nèi)容URL結(jié)構(gòu)層次,都在一個(gè)DIV標(biāo)簽內(nèi),然后便通過xpath定位,并將其儲(chǔ)存到item對(duì)象中

![](https://img-blog.csdnimg.cn/direct/67c41a4fb79349afb65c931f93dbc379.png)

????????item對(duì)象中所存儲(chǔ)的值

import scrapy

class FivebloodItem(scrapy.Item): # define the fields for your item here like: # 設(shè)置item中儲(chǔ)存的response的內(nèi)容 title = scrapy.Field() content = scrapy.Field() # pass

? ? ?然后就要將item數(shù)據(jù)傳遞到詳情頁(yè)中去

解析每個(gè)版面中新聞的內(nèi)容和標(biāo)題

def parse_model(self,response):

div_list=response.xpath('/html/body/div/div[3]/div[3]/div[1]/div[1]/div/ul/li/div/div')

for div in div_list:

title=div.xpath('.//h3/a/text()').extract_first()

new_detail_url=div.xpath('./a/@href').extract_first()

# 創(chuàng)建item對(duì)象,將數(shù)據(jù)解析到item中去

item=FivebloodItem()

item['title']=title

# 通過meta參數(shù),把item這個(gè)字典只給‘key’,將parse_model的response傳遞給parse_detail中去

yield scrapy.Request(url=new_detail_url,callback=self.parse_detail,meta={'item':item})

### 4.獲取詳情頁(yè)的內(nèi)容

? ? ? ? 這里注意一下extract()和extract\_first()的區(qū)別,由于內(nèi)容里邊可能第一個(gè)列表不會(huì)包含全部的內(nèi)容,所以使用extract()返回內(nèi)容列表

解析新聞內(nèi)容

def parse_detail(self, response):

# extract():這個(gè)方法返回的是一個(gè)數(shù)組list,,里面包含了多個(gè)string,如果只有一個(gè)string,則返回['ABC']這樣的形式。

# extract_first():這個(gè)方法返回的是一個(gè)string字符串,是list數(shù)組里面的第一個(gè)字符串。

content=response.xpath('//*[@id="content"]/div[2]//text()').extract()

# 將列表內(nèi)容轉(zhuǎn)換為字符串

content=" ".join(content)

# 消除里邊的空格和換行符

content=content.replace('\n', '').replace('\r', '')

# 儲(chǔ)存到item中去

item=response.meta['item']

item['content']=content

# 最終將所有response存儲(chǔ)到item中,由item提交到管道類中去

yield item

在詳情頁(yè)網(wǎng)址中的去F12定位到內(nèi)容的標(biāo)簽地址

![](https://img-blog.csdnimg.cn/direct/f2f945863e1b4921830a1707b727a0c8.png)

????????然后關(guān)閉一下開始創(chuàng)建的瀏覽器對(duì)象

關(guān)閉瀏覽器對(duì)象

def closed(self,spider):

self.bro.quit()

### 5.在中間件中攔截響應(yīng)

? ? ? ? 詳情頁(yè)的內(nèi)容可能是動(dòng)態(tài)數(shù)據(jù),可以對(duì)發(fā)起的請(qǐng)求進(jìn)行攔截,scrapy有五大核心模塊,想要了解可以去看看

[https://blog.csdn.net/Tudective/article/details/136952793?spm=1001.2014.3001.5502]( )

from scrapy import signals

useful for handling different item types with a single interface

from itemadapter import is_item, ItemAdapter

from time import sleep

import random

from scrapy.http import HtmlResponse class FivebloodDownloaderMiddleware:

# 攔截請(qǐng)求

def process_request(self, request, spider):

return None

# 攔截響應(yīng)

def process_response(self, request, response, spider):

# 獲取在five文件中創(chuàng)建的爬蟲類中的瀏覽器對(duì)象

bro=spider.bro

# 挑選出指定的響應(yīng)對(duì)象進(jìn)行更改,即各個(gè)模塊的url

if request.url in spider.model_urls:

bro.get(request.url)

# 瀏覽器停留等待防止,防止加載過快,未解析到數(shù)據(jù)

sleep(5)

# 包含動(dòng)態(tài)數(shù)據(jù)

page_text=bro.page_source

# HtmlResponse作為Response構(gòu)造方法,能夠?qū)TML內(nèi)容進(jìn)行解析

new_response=HtmlResponse(url=request.url,body=page_text,encoding='utf-8',request=request)

return new_response

else:

return response

自我介紹一下,小編13年上海交大畢業(yè),曾經(jīng)在小公司待過,也去過華為、OPPO等大廠,18年進(jìn)入阿里一直到現(xiàn)在。

深知大多數(shù)Python工程師,想要提升技能,往往是自己摸索成長(zhǎng)或者是報(bào)班學(xué)習(xí),但對(duì)于培訓(xùn)機(jī)構(gòu)動(dòng)則幾千的學(xué)費(fèi),著實(shí)壓力不小。自己不成體系的自學(xué)效果低效又漫長(zhǎng),而且極易碰到天花板技術(shù)停滯不前!

因此收集整理了一份《2024年P(guān)ython開發(fā)全套學(xué)習(xí)資料》,初衷也很簡(jiǎn)單,就是希望能夠幫助到想自學(xué)提升又不知道該從何學(xué)起的朋友,同時(shí)減輕大家的負(fù)擔(dān)。

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開發(fā)知識(shí)點(diǎn),真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新

如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼獲取?。。。▊渥ython)

8a67243c1008edf79.png)

既有適合小白學(xué)習(xí)的零基礎(chǔ)資料,也有適合3年以上經(jīng)驗(yàn)的小伙伴深入學(xué)習(xí)提升的進(jìn)階課程,基本涵蓋了95%以上前端開發(fā)知識(shí)點(diǎn),真正體系化!

由于文件比較大,這里只是將部分目錄大綱截圖出來,每個(gè)節(jié)點(diǎn)里面都包含大廠面經(jīng)、學(xué)習(xí)筆記、源碼講義、實(shí)戰(zhàn)項(xiàng)目、講解視頻,并且后續(xù)會(huì)持續(xù)更新

如果你覺得這些內(nèi)容對(duì)你有幫助,可以掃碼獲?。。。。▊渥ython)

柚子快報(bào)邀請(qǐng)碼778899分享:Scrapy爬取網(wǎng)易新聞

http://yzkb.51969.com/

精彩文章

評(píng)論可見,查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18966942.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問

文章目錄