Pyhton爬取資料的方法總結

2021-10-08 02:51:56 字數 2170 閱讀 5001

1.獲取的json

import requests
使用requests,這個第三方的組建來實現。它既可以爬取json檔案,也可以爬取網頁資訊。

適用場景:

例如:***/123.html ***/124.html類似於這些網頁即可

data = requests.get(url=url, verify=false)

if data.status_code == 404:

print(url)

return "no"

str = data.text

這是爬取的json字串,解析時候很簡單。但是有時候會遇到裡面包含有一些html的標籤,我們可以利用正規表示式,先做一下處理才可以。然後將這個看似可json一樣格式的字串,先轉化為dick(字典),然後再將字典轉化為json字串。但是在正真應用的時候一般只轉化為字典即可,不需要轉化為json,因為json就是字串,不便於獲取其中的key對應的value值。但是字典可以根據dick_name['key_name']來獲取key對應的value值。

import re

# re 為上面獲取的結果

re_h = re.compile(']*>')

res = re_h.sub('', res)

# 轉化為字典

dick_data = json.loads(res)

如果獲取的是網頁的原始檔,就需要乙個工具beautifulsoup,來解析網路的原始檔。

import requests

from bs4 import beautifulsoup

import urllib3

# 忽略https的安全警告

urllib3.disable_warnings()

file = requests.get(url=url, verify=false)

soup = beautifulsoup(file.text, "html.parser")

soup是乙個標籤元素的集合或者是類。在這裡可以通過soup獲取標籤的屬性,或者標籤的值,或者是標籤點的屬性值。 例如:

# 星座和日期

info1 = soup.select('h4')[0]

print(info1.text)

使用selenium+webdriver的方式,這是一種無厘頭的請求方式,可以本逼真的模仿使用對於瀏覽器的操作,而實現最大效率的爬取和防止反爬取的爬蟲手段。

1.安裝weddriver

然後在環境變數種進行配置。

2.然後匯入對應的工具包。

# 匯入selenium的驅動介面

from selenium import webdriver

# 匯入鍵盤操作的keys包

from selenium.webdriver.common.keys import keys

# 匯入chrome選項

from selenium.webdriver.chrome.options import options

配置driver的路徑:

_chrome_driver_win = 'f:/software/chromedriver.exe'
3.建立driver

# 建立driver

def create_driver():

chrome_options = options()

chrome_options.add_argument('--headless')

driver = webdriver.chrome(executable_path=config._chrome_driver_win, options=chrome_options)

return driver

根據返回的driver即可獲取震哥哥網頁的原文件,然後使用bs4進行解析。

soup = beautifulsoup(driver.page_source, 'html.parser')

4.使用keys

driver.find_element_by_id('next_buttons').click()

爬取新聞的總結

例子如下 headers user agent opener urllib.request.build opener opener.addheaders headers urllib.request.install opener opener 有些 可以識別訪問者是不是瀏覽器還是爬蟲這類自動訪問程式...

爬取非同步請求(XHR JS)資料方法

之前在做爬蟲的時候,比如在爬取到網頁的時候,發現很多內容明明在瀏覽器看得見,但是請求下來的內容卻沒有,於是開啟f12檢視network發現,如下 其實會出現看得見,摸不著的情況下是因為網頁的資料是非同步載入的,所以在http抓到的網頁是不包含在裡面的。網頁有些資料呈現是採非同步方式,會是在背景去送h...

Scrapy Mongodb爬取資料

scrapy爬蟲資料存到mongodb中 其實主要是前兩步 1 在settings.py中進行配置 item pipelines mongodb host 127.0.0.1 mongodb port 27017 mongodb dbname spider1 mongodb docname book...