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...