@
前言
hello,大家好,在上章的內容里我們已經可以爬取到了整個網頁下來,當然也僅僅就是一個網頁。
因為里面還有很多很多的標簽啊之類我們所不需要的東西。
額,先暫且說下本章內容,如果是沒有絲毫編程基礎的小白來說是比較難懂的
本章內容重點是
1、分析網站的結構來獲取一個json串,也就是之前我們爬的是一個網頁,這次是爬取一個Ajax請求的一個響應數據(json串)。
2、使用selenuim模塊自動化工具
所以如果需要獲取一些評論啊,或者一些特殊的要求都可以學一下。
先說好,更上一章一樣下載好selenium模塊!!python網絡爬蟲之入門[一]
一、獲取今日頭條的評論信息(request請求獲取json)
1、分析數據
進入頭條
在fillder中分析一下這個網頁的一個請求
詳細講解:
我們測試一下
2、獲取數據
ok,那么跟據我們之前所學的內容我們可以直接使用request模塊請求一次
全部代碼:
"""
使用requests模塊爬取動態網頁數據:
今日頭條,某條新聞的評論信息
"""
import requests
url = "https://www.toutiao.com/api/comment/list/?group_id=6749065854995939854&item_id=6749065854995939854&offset=0&count=15"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)"
}
requests.packages.urllib3.disable_warnings()
# 請求,獲得響應
response = requests.get(url, headers=headers, verify=False)
if response.status_code == 200:
# print(response.text)
# print(response.json())
print(response.text)
二、獲取今日頭條的評論信息(selenium請求獲取)
ps:selenium模塊其實是一個自動化測試工具,大家還可以深入了解,因為它不僅僅只能用來做爬蟲。
還可以做為測試工具使用
1、分析數據
在使用selenium模塊之前先確定好自己使用的瀏覽器的型號,因為知道后才能去下載屬於自己的一個webdriver
比如我的瀏覽器型號
然后自行到網上找到自己瀏覽器的webdriver
每個的瀏覽器的driver都不一樣,我的就是chromedriver.exe
然后放到自己的python解釋器下的script目錄下
來我們來解析一下這個網站:https://www.toutiao.com/a6747626504986853891/
我們來看一看主體部分:
2、獲取數據
引入調用,我在上面已經把我們可能所需要的東西都獲取到。也講解了一下一下;
這個是加了一個python程序控制的點擊事件。
lookthis....
額,獲取到了吧,嘿嘿
房源案例(僅供參考!!!,也許爬不了了)
"""
綜合案例:
使用selenium爬取 airbnb房源信息
一個房源所有的信息:_gig1e7
名稱:_qhtkbey
類型及大小:_fk7kh10里邊的span
價格:_1ixtnfc里面的span
_1dir9an
"""
from selenium import webdriver
import time
options = webdriver.ChromeOptions()
options.add_argument("--headless")
driver = webdriver.Chrome(options=options)
for page in range(18):
print(f"第{page+1}頁數據:")
driver.get(f"https://www.airbnb.cn/s/長沙/homes?refinement_paths%5B%5D=%2Fhomes¤t_tab_id=home_tab&selected_tab_id=home_tab&screen_size=large&hide_dates_and_guests_filters=false&place_id=ChIJxWQcnvM1JzQRgKbxoZy75bE&s_tag=vaaWeg7D§ion_offset=4&items_offset={page*18}&last_search_session_id=7d2afba3-cc47-434c-92be-65bac7643d3b")
houseAll = driver.find_elements_by_css_selector("div._gig1e7")
i = 1
for house in houseAll:
# 名稱
name = house.find_element_by_css_selector("div._qhtkbey").text
# 價格
price = house.find_element_by_css_selector("div._1ixtnfc").text
newprice = price.replace("價格", "").replace("\n", "")
# 類型及大小
typeSize = house.find_element_by_css_selector("span._fk7kh10").text
type = typeSize.split(" · ")[0]
size = typeSize.split(" · ")[1]
print(f"{i} {name} {newprice} {type} {size}")
time.sleep(2)
i = i + 1
time.sleep(5)
上面內容只能慢慢思考問題了
但是這還有一個selenium的使用方法:
后記
還是那句話,好好的分析網頁結構
如果感覺本章寫的還不錯的話,不如。。。。。(~ ̄▽ ̄)~ ,(´▽`ʃ♡ƪ)