網(wǎng)頁爬取文本內(nèi)容實(shí)現(xiàn)翻頁等代碼的優(yōu)化

話不多說,先上代碼,接下來再一句一句解釋:

import requests
import time
from lxml import etree
def getpage(url):
    r=requests.get(url,headers=headers)
    html=etree.HTML(r.text)
    name=html.xpath('//div[@class="title"]//a/text()')
    zhuyan=html.xpath('//div[@class="subtitle text-muted text-overflow hidden-xs"]/a[1]/text()')
    for name1,zhuyan1 in zip(name,zhuyan):#這是我剛掌握的zip函數(shù)的作用,就是把兩個(gè)序列一一對(duì)應(yīng),如下面print
        with open('C:/Users/Administrator/Desktop/新建文本文檔.txt', 'a', encoding="utf-8") as f:
            print(name1+" 主演是 "+zhuyan1)#a是插入,w是讀取
            f.write(name1+"\n")
if __name__=="__main__":
    urls=["http://www.bdtvs.com/search.php?page={}&searchtype=5&tid=2&area=%E5%A4%A7%E9%99%86".format(str(i)) for i in range(1,282)]#這一句語言很簡介的實(shí)現(xiàn)翻頁,解決的很麻煩的事情,對(duì)其中更改的野馬進(jìn)行遍歷
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.157 Safari/537.36'}#大家一定要注意的是headers后面的UA的冒號(hào)和減去一個(gè)空格,否則會(huì)報(bào)錯(cuò)
    for url in urls:
        getpage(url)
        time.sleep(0.5)

今天這個(gè)代碼讓我在對(duì)爬蟲代碼有了較為清晰的理解,作為一名自學(xué)者,每一步很是艱辛,能對(duì)著屏幕想半天,這個(gè)優(yōu)化主要有兩點(diǎn),1、zip函數(shù)進(jìn)行一一對(duì)應(yīng),更方便輸出2、對(duì)網(wǎng)址進(jìn)行格式化{},format(),用for進(jìn)行遍歷,使用range。
其他代碼都很簡單,希望能共同學(xué)習(xí)。
下面貼幾個(gè),我學(xué)習(xí)初期的一些代碼,應(yīng)該是思路不一樣。

import requests
from lxml import html
import sys
for pageNum in range(327):
    url = 'https://movie.douban.com/review/9936402/?start={}'.format(pageNum*327)
    page=requests.Session().get(url)
    tree=html.fromstring(page.content)#不是utf-8,如何轉(zhuǎn)碼,把(page.text)改為(page.content.decode('gbk'))
    result=tree.xpath('//div[@class="content report-comment"]//div[@class="header"]/a/text()') #需要獲取的數(shù)據(jù)
    result2=tree.xpath('//div[@class="content report-comment"]//p[@class="comment-text"]/text()')
    n = 0
    for n in range(len(result)):**#這個(gè)思路我挺佩服自己的,能想到使用切片,做到同一,而且當(dāng)時(shí)不太會(huì)函數(shù)**
        jieguo = "用戶@" + result[n] + "@發(fā)表:" + result2[n]
        print(jieguo)

再之前的一個(gè)語句,沒有學(xué)會(huì)翻頁的時(shí)候:

import requests
from lxml import html #當(dāng)時(shí)學(xué)的是tree,后來還是etree更好
url='https://movie.douban.com/review/9936402/?start=0' #需要爬的網(wǎng)址
page=requests.Session().get(url)
tree=html.fromstring(page.content)#不是utf-8,如何轉(zhuǎn)碼,把(page.text)改為(page.content.decode('gbk'))
result=tree.xpath('//div[@class="content report-comment"]//div[@class="header"]/a/text()') #需要獲取的數(shù)據(jù)
result2=tree.xpath('//div[@class="content report-comment"]//p[@class="comment-text"]/text()')
n = 0
i=result[n]
h=result2[n]#這兩個(gè)變量,設(shè)置了但沒有用,當(dāng)時(shí)也是蠢得可以
for n in range(len(result)):
    print("用戶@"+result[n]+"@發(fā)表:"+result2[n])
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容