爬取豆瓣TOP250書單

2021-08-28 11:46:44 字數 2033 閱讀 8147

小白學習爬蟲

爬取豆瓣top250的書,正好本人也喜歡看書

思路分析:

這是top250第一頁的鏈結

?start=25第二頁的鏈結

?start=50第三頁的鏈結

將第一頁鏈結改為?start=0也是可以訪問的,每一頁數字加25,構建10頁**

**如下:

urls = ['?start={}'.format(str(i))

for i in range(0,250,25)]

詳細**如下:

import requests

from lxml import etree

import csv

headers =

f = open('c:/users/qinhan/desktop/doubanbook.scv','wt',newline='',encoding='utf-8')

writer = csv.writer(f)

writer.writerow(('name','url','author','publisher','data','price','rate','comment'))#建立csv

urls = ['?start={}'.format(str(i))

for i in range(0,250,25)]

for url in urls:

html = requests.get(url,headers = headers)#加入請求頭

selector = etree.html(html.text)

infos = selector.xpath('//tr[@class="item"]') #取大標籤(1)

for info in infos:

name = info.xpath('td/div/a/@title')[0]

url = info.xpath('td/div/a/@href')[0]

book_info = info.xpath('td/p/text()')[0] #/text()獲取標籤中文字資訊

author = book_info.split('/')[0]

publisher = book_info.split('/')[-3]

data = book_info.split('/')[-2]

price = book_info.split('/')[-1] #(2)

rate = info.xpath('td/div/span[2]/text()')[0]

comments = info.xpath('td/p/span/text()')

comment = comments[0] if len(comments) != 0 else "空"

writer.writerow((name,url,author,publisher,data,price,rate,comment))

f.close()

(1)大標籤

先抓大後抓小,找到迴圈點,這裡迴圈點即為:

//tr[@class="item         #選取所有tr元素,且這些元素擁有值為item的class屬性

(2)最初想的是0 1 2 3

author = book_info.split('/')[0]

publisher = book_info.split('/')[1]

data = book_info.split('/')[2]

price = book_info.split('/')[3]

結果儲存下來如圖:

這裡犯了想當然的錯誤,不是所有的都是按作者,出版社,出版時間和**排列的,作者一欄還有翻譯作者如圖:

故1,2,3,4肯定有錯,而1,-3,-2,-1則沒問題

爬取豆瓣Top250

requests庫可以自動爬取html頁面,自動網路請求提交。安裝方法 pip install requests requests庫主要有7個方法 首先開啟網頁 豆瓣top250 然後f12,得到如下圖 我們要找的內容在紅框裡面。這個頁面有25個電影,第乙個頁面 第二個頁面 我們可以觀察到 每個頁面...

爬取豆瓣top250

案例實現 需求 要爬取豆瓣top250的電影資訊資料 標題 評分 引言 詳情頁的url 10頁的資料 都要爬取 並寫入到csv檔案中 第一頁 第二頁 第三頁 第四頁 一共是250條 25頁 分析 page 1 25 總結 第乙個 str格式化的運用 解決辦法 先是找規律 進行格式化的替換 douba...

爬取豆瓣電影TOP250

利用css選擇器對電影的資訊進行爬取 import requests import parsel import csv import time import re class cssspider def init self self.headers defget dp self,url respon...