大家好,我是@馬哥python說(shuō) ,一枚10年程序猿。
今天分享一期python爬蟲案例,爬取目標(biāo)是大麥網(wǎng)近期演出活動(dòng):- 大麥搜索
爬取結(jié)果截圖:
含10個(gè)字段:
頁(yè)碼,演出標(biāo)題,鏈接地址,演出時(shí)間,演出城市,演出地點(diǎn),售價(jià),演出類別,演出子類別,售票狀態(tài)。
演示視頻:【Python爬蟲演示】爬取大麥網(wǎng)任意城市的近期演出!
以上。
首先,導(dǎo)入需要用到的庫(kù):
import pandas as pd import requests import os import datetime from time import sleep import random
定義一個(gè)請(qǐng)求頭:
# 設(shè)置請(qǐng)求頭信息 headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299', 'Cookie': '換成自己的cookie', 'X-Xsrf-Token': '7d065ac9-b924-4c14-869a-ab599b571244', 'Accept': 'application/json, text/plain, */*', 'Accept-Encoding': 'gzip, deflate, br', 'Accept-Language': 'en-US,en;q=0.9,zh;q=0.8,zh-CN;q=0.7', 'Bx-V': '2.5.0', 'Referer': 'https://search.damai.cn/search.htm?spm=a2oeg.home.category.ditem_0.591b23e1HxE6Vj&ctl=%E6%BC%94%E5%94%B1%E4%BC%9A&order=1&cty=%E6%88%90%E9%83%BD', 'Sec-Ch-Ua': '"Not.A/Brand";v="8", "Chromium";v="114", "Google Chrome";v="114"', 'Sec-Ch-Ua-Mobile': '?0', 'Sec-Ch-Ua-Platform': "macOS", 'Sec-Fetch-Dest': 'empty', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Site': 'same-origin', }
其中,cookie的獲取方式如下:
定義請(qǐng)求地址url:
# 請(qǐng)求地址 url = 'https://search.damai.cn/searchajax.html'
定義請(qǐng)求參數(shù)params,從PayLoad中獲?。?br>
發(fā)送請(qǐng)求,并且用json格式解析數(shù)據(jù):
# 發(fā)送請(qǐng)求 r = requests.get(url, headers=headers, params=params) # 解析數(shù)據(jù) json_data = r.json()
以"演出標(biāo)題"字段為例:
for data in json_data['pageData']['resultData']: # 演出標(biāo)題 title = data['nameNoHtml'] title_list.append(title) print('演出標(biāo)題:', title)
其他字段同理,不再贅述。
最后是保存到csv文件:
df = pd.DataFrame( { '頁(yè)碼': page, '演出標(biāo)題': title_list, '鏈接地址': href_list, '演出時(shí)間': time_list, '演出城市': city_list, '演出地點(diǎn)': loc_list, '售價(jià)': price_list, '演出類別': category_list, '演出子類別': subcategory_list, '售票狀態(tài)': status_list, } ) # 保存到csv文件 df.to_csv(result_file, encoding='utf_8_sig', mode='a+', index=False, header=header)
其中,encoding參數(shù)設(shè)置為utf_8_sig,目的是防止csv文件產(chǎn)生亂碼,不便讀取。
整個(gè)代碼中,還含有:設(shè)置sleep隨機(jī)等待、判斷循環(huán)停止條件、防止多次寫入表頭、用戶input輸入過(guò)濾條件、往csv文件名添加時(shí)間戳等功能,篇幅有限,詳細(xì)請(qǐng)見原始代碼。
代碼演示視頻:
【Python爬蟲演示】爬取大麥網(wǎng)任意城市的近期演出!
聯(lián)系客服