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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python爬虫之利用pyquery爬取当当网图书信息

發布時間:2023/12/31 python 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python爬虫之利用pyquery爬取当当网图书信息 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

初學爬蟲, 根據課程學習python爬蟲,老規矩,先不管三七二十幾,先敲了再說。

需求:

爬取圖書的圖片鏈接、圖書的title信息、當前定價、評論數和評價星數共五部分信息。

?分析:

打開當當,搜索python書籍,然后右鍵,檢查網頁元素,找到network,然后刷新整個頁面,就會返回請求的頁面數據,找到左邊的紅框內的請求鏈接,然后打開右邊的response模塊,檢查下面返回的內容是否有我們需要的信息,發現沒問題,就可以繼續往下進行。

?尋找圖片:?

把鼠標放在網頁的圖片上直接右鍵,然后點擊檢查,可以直接定位到網頁源碼的圖片所在位置,如下圖:

?此時發現每一條<li ddt-pit******>...</li>內的信息都是一條圖書信息

而里面的這個鏈接就是我們要找的第一條數據信息,圖片的鏈接

?此時便可先獲取圖片的鏈接

import requests from pyquery import PyQuery import csv import time# 找到瀏覽器的headers headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'} base_url = 'https://search.dangdang.com/?key=python&act=input' # 獲取頁面 res = requests.get(base_url,headers=headers) # 解析頁面 html = res.content.decode('GBK') # 獲取頁面返回信息后解碼,一般使用utf-8,而此當當網使用的是GBK編碼,在解碼的時候我們就用GBK進行解碼doc = PyQuery(html) book_ul = doc('#component_59 li').items() # 獲取所有存放在li標簽里的圖書的信息,并存放在迭代器中 for one_li in book_ul:#print(one_li)# 獲取圖片鏈接,因為有的圖片鏈接是放在src屬性中,有的鏈接是放在data-original屬性中,所以用一個if判斷來選取if one_li('.pic img').attr('data-original'):img_url = one_li('.pic img').attr('data-original')else:img_url = one_li('.pic img').attr('src')print(img_url)# 標題title = one_li('.name a').attr('title')#print(title)# 價格price = one_li('.price .search_now_price').text()#print(price)# 獲取評價數comments = one_li('.search_star_line .search_comment_num').text()#print(comments)# 獲取星數,本身網頁中的星星數是對應的數值,所以我們需要進行一個轉換stars = float(one_li('.search_star_black span').attr('style').split(':')[-1].strip('%;'))/20#print(stars)

?輸出圖片鏈接如下:

同樣道理,獲取標題、定價、評價數、評價星數,同樣在剛才的循環代碼添加:

?最后加入翻頁,整理完整代碼如下:

import requests from pyquery import PyQuery import csv import timeclass DDSpider(object):def __init__(self,key):self.key = key # 當前搜索的圖書名,搜索關鍵詞self.headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36'}self.base_url = 'https://search.dangdang.com/?key='+key+'&act=input&page_index={}'# 獲取界面def get_pageInfo(self):num_page = 0while True:num_page += 1page_url = self.base_url.format(num_page)res = requests.get(page_url,headers=self.headers) # print(res.content.decode('GBK'))# 解析df = self.parse_pageInfo(res.content.decode('GBK'))return dftime.sleep(1) # 為了防止請求過快,添加緩沖時間if num_page == 1: # 當前設置為爬取1頁數據break# 解析界面def parse_pageInfo(self,html):doc = PyQuery(html)book_ul = doc('#component_59 li').items()img_list = []title_list = []price_list = []comments_list = []stars_list = []for one_li in book_ul: # print(one_li)# 獲取圖片鏈接if one_li('.pic img').attr('data-original'):img_url = one_li('.pic img').attr('data-original')else:img_url = one_li('.pic img').attr('src')img_list.append('http:'+img_url)# 標題title = one_li('.name a').attr('title') # print(title)title_list.append(title)# 價格price = one_li('.price .search_now_price').text() # print(price)price_list.append(price)# 獲取評價數comments = one_li('.search_star_line .search_comment_num').text() # print(comments)comments_list.append(comments)# 獲取星數stars = float(one_li('.search_star_black span').attr('style').split(':')[-1].strip('%;'))/20#stars = one_li('.search_star_black span').attr('style')#print(stars)stars_list.append(stars)data = {'img':img_list,'title':title_list,'price':price_list,'comments':comments_list,'stars':stars_list}return pd.DataFrame(data)if __name__ == '__main__':dd = DDSpider('python')df = dd.get_pageInfo()print(df)

總結

以上是生活随笔為你收集整理的python爬虫之利用pyquery爬取当当网图书信息的全部內容,希望文章能夠幫你解決所遇到的問題。

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