1. 程式人生 > 其它 >爬取城市名、豬八戒、貼吧圖片和selenuim模組

爬取城市名、豬八戒、貼吧圖片和selenuim模組

xpath相關練習和selenuim模組

  • 爬取城市名稱

  • 爬取豬八戒資料並寫入表格

  • 爬取貼吧圖片資料

  • 自動化測試工具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 # 根據文字拿標籤