爬取城市名、豬八戒、貼吧圖片和selenuim模組
阿新 • • 發佈:2021-09-28
xpath相關練習和selenuim模組
-
-
爬取豬八戒資料並寫入表格
-
爬取貼吧圖片資料
-
爬取城市名
目的網址:https://www.aqistudy.cn/historydata/
思路
1,檢視詳細頁面,檢視資料載入方式 2,檢視network獲取url,請求方式獲取,請求體資訊需要請求值
3,根據網路原始碼的資訊佈局獲取頁面,選擇適合的選擇器和解析方法
程式碼
# 呼叫模組 import requests from lxml import etree
發現數據為直接載入
檢視network尋找請求頭資訊
# 傳送請求獲取頁面資料res=requests.get('https://www.aqistudy.cn/historydata/', headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36" } ) # 構造物件 city_list= etree.HTML(res.text) # 獲取熱門城市 hot_city=city_list.xpath('/html/body/div[3]/div/div[1]/div[1]/div[2]/ul/li/a/text()') print(hot_city)
# 獲取其他城市 other_city=city_list.xpath('/html/body/div[3]/div/div[1]/div[2]/div[2]/ul/div[2]/li/a/text()') print(other_city)
思考如何爬取詳細頁面資料
由於詳情頁面存在js程式碼阻止爬取資料,以現有知識很難獲取
爬取豬八戒
需求:公司名稱 地址 價格 成交量 描述資訊思路
1.開啟網址,檢視資料載入方式 2.發現是直接載入,檢視請求方式,可以直接向網址傳送請求,獲取相關請求體資訊3.獲取資料後,選用喜歡的模組來獲取相關資料
執行
# 呼叫用模組 import requests from bs4 import BeautifulSoup from lxml import etree from openpyxl import Workbook # 構造表格物件 wb=Workbook() # 構造工作簿 wb1=wb.create_sheet('豬八戒',0) # 建立表頭檔案 wb1.append(['價格','公司','接單數','詳細資訊','地址'])
發現數據為直接載入,通過network檢視url和請求方式
# 傳送get請求 res=requests.get('https://shanghai.zbj.com/search/f/?', params={"kw": "python"} ) # 構造物件 zhu_html=etree.HTML(res.text) # 先查詢所有的外部div標籤 zhu_div=zhu_html.xpath('/html/body/div[6]/div/div/div[2]/div[5]/div[1]/div') # 迴圈獲取div for div in zhu_div: # 獲取價格 zhu_price=div.xpath('.//span[@class="price"]/text()') # 獲取公司名 zhu_name=div.xpath('./div/div/a[1]/div[1]/p/text()') # 獲取接單數 zhu_num =div.xpath('./div/div/a[2]/div[2]/div[1]/span[2]/text()') # 獲取詳細資訊 zhu_info=div.xpath('.//div/a[2]/div[2]/div[2]/p/text()') # 獲取地址 zhu_address=div.xpath('./div/div/a/div[1]/div/span/text()')
# 名字的格式不都一樣 try: # 將名字中多餘部分去除 name=zhu_name[1].strip('\\n') # 如果發生錯誤 except Exception as f: # 名字為空 name='' # 名字的格式不都一樣,無法獲取 try: # 輸入資訊 wb1.append([zhu_price[0],name,zhu_num[0],zhu_info[0],zhu_address[0]]) except Exception as f: continue # break # 儲存檔案 wb.save('豬八戒.xlsx')
結果
防止被封只獲取一個
下載
pip3 install selenium
link_text # 根據文字拿標籤