python動態網頁抓取
『壹』 python網頁動態信息抓取,目前使用的時selenium
你可以使用scrapy, python的爬蟲框架,或者如果你只是抓取比較簡單的頁面,可以使用requests這個python庫,功能也足夠用了。
如果解決了您的問題請採納!
如果未解決請繼續追問
『貳』 python request怎麼抓取網頁數據
我們經常會發現網頁中的許多數據並不是寫死在HTML中的,而是通過js動態載入的。所以也就引出了什麼是動態數據的概念, 動態數據在這里指的是網頁中由javascript動態生成的頁面內容,是在頁面載入到瀏覽器後動態生成的,而之前並沒有的。
在編寫爬蟲進行網頁數據抓取的時候,經常會遇到這種需要動態載入數據的HTML網頁,如果還是直接從網頁上抓取那麼將無法獲得任何數據。
今天,我們就在這里簡單聊一聊如何用python來抓取頁面中的JS動態載入的數據。
給出一個網頁:豆瓣電影排行榜,其中的所有電影信息都是動態載入的。我們無法直接從頁面中獲得每個電影的信息。
如下圖所示,我們無法在HTML中找到對應的電影信息。
『叄』 如何用Python抓取動態頁面信息
很早之前,學習Python web編程的時候,就涉及一個Python的urllib。可以用urllib.urlopen("url").read()可以輕松讀取頁面上面的靜態信息。但是,隨著時代的發展,也來越多的網頁中更多的使用javascript、jQuery、PHP等語言動態生成頁面信息。因此,用urllib再去抓取頁面HTML就不足以達到我們想要的效果。
回到頂部
解決思路:
有一個思路最為簡單的思路可以動態解析頁面信息。urllib不可以解析動態信息,但是瀏覽器可以。在瀏覽器上展現處理的信息其實是處理好的HTML文檔。這為我們抓取動態頁面信息提供了很好的思路。在Python中有一個很有名的圖形庫——PyQt。PyQt雖然是圖形庫,但是他裡面 QtWebkit。這個很實用。谷歌的Chrome和蘋果的Safari都是基於WebKit內核開發的,所以我們可以通過PyQt中得QtWebKit 把頁面中的信息讀取載入到HTML文檔中,再解析HTML文檔,從HTML文檔中提取我們想用得信息。
回到頂部
所需材料:
作者本人實用Mac OS X。應該在Windows和Linux平台也可以採用相同的辦法。
1、Qt4 library
Library,而不是Creator。Library在Mac的默認安裝路徑下,應該是/home/username/Developor/,不要改變Qt4的默認安裝路徑。否則可能安裝失敗。
官方網址:http://qt-project.org/downloads
2、SIP、PyQt4
這兩個軟體可以在在PyQt的官網找到。下載的是它的源碼。Mac和Linux需要自己編譯。
下載地址是:http://www.riverbankcomputing.co.uk/software/pyqt/download
在終端切換到文件解壓後的目錄中。
在終端中輸入
python configure.py
make
sudo make install
進行安裝編譯。
SIP和PyQt4兩個安裝方法相同。但是PyQt4依賴SIP。所以先安裝SIP再安裝PyQt4
1、2兩步完成之後,Python的PyQt4的模塊就安裝好了。在Python shell中輸入import PyQt4看看能不能找到PyQt4的模塊。
3、Spynner
spynner是一個QtWebKit的客戶端,它可以模擬瀏覽器,完成載入頁面、引發事件、填寫表單等操作。
這個模塊可以在Python的官網找到。
下載地址: https://pypi.python.org/pypi/spynner/2.5
解壓後,cd到安裝目錄,然後輸入sudo python configure.py install安裝該模塊。
這樣Spynner模塊就安裝完成了,在python shell中試試import spynner看看該模塊有沒有安裝完成。
回到頂部
Spynner的簡單使用
Spynner的功能十分強大,但是由於本人能力有限,就介紹一下如何顯示網頁的源碼吧。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#! /usr/bin/python
#-*-coding: utf-8 -*-
import spynner
browser = spynner.Browser()
#創建一個瀏覽器對象
browser.hide()
#打開瀏覽器,並隱藏。
browser.load("http://www..com")
#browser 類中有一個類方法load,可以用webkit載入你想載入的頁面信息。
#load(是你想要載入的網址的字元串形式)
print browser.html.encode("utf-8")
#browser 類中有一個成員是html,是頁面進過處理後的源碼的字元串.
#將其轉碼為UTF-8編碼
open("Test.html", 'w+').write(browser.html.encode("utf-8"))
#你也可以將它寫到文件中,用瀏覽器打開。
browser.close()
#關閉該瀏覽器
通過這個程序,就可以比較容易的顯示webkit處理的頁面HTML源碼了。
『肆』 python 如何抓取動態頁面內容
下面開始說一下本文抓取動態頁面數據的相關工具和庫:
1. python 2.7
2. pyqt
3. spynner (在安裝過程中,其他的一些依賴庫也會自動上網下載安裝)
4. BeautifulSoup
5. ide工具是pycharm(當然這個只是個人喜好,也可以使用其他的ide工具)
以上幾個工具都可以網路找到,python現在出了3.x版本的,但是由於眾多第三方庫或架構都沒有兼容,並且後續要使用到的爬蟲框架scrapy也是沒有支持3.x版本,因此還是建議使用2.7版本吧。
spynner和BeautifulSoup下載後,都可以cd到解壓出來的目錄,然後使用python setup.py install來完成安裝,需要注意的是spynner依賴pyqt,所以一定要安裝pyqt,否則無法使用spynner。
下面使用一個具體是例子來說明一下spynner和BeautifulSoup的使用,我們就以爬取京東頁面上的一些產品數據來說明如何爬取動態頁面數據(當然,如果我們過於頻繁的爬京東,估計還是有可能被京東將我們ip拉黑的)。
『伍』 python怎麼獲取動態網頁鏈接
四中方法:
'''
得到當前頁面所有連接
'''
import requests
import re
from bs4 import BeautifulSoup
from lxml import etree
from selenium import webdriver
url = 'http://www.ok226.com'
r = requests.get(url)
r.encoding = 'gb2312'
# 利用 re
matchs = re.findall(r"(?<=href=\").+?(?=\")|(?<=href=\').+?(?=\')" , r.text)
for link in matchs:
print(link)
print()
# 利用 BeautifulSoup4 (DOM樹)
soup = BeautifulSoup(r.text,'lxml')
for a in soup.find_all('a'):
link = a['href']
print(link)
print()
# 利用 lxml.etree (XPath)
tree = etree.HTML(r.text)
for link in tree.xpath("//@href"):
print(link)
print()
# 利用selenium(要開瀏覽器!)
driver = webdriver.Firefox()
driver.get(url)
for link in driver.find_elements_by_tag_name("a"):
print(link.get_attribute("href"))
driver.close()
『陸』 python3 怎樣爬取動態載入的網頁信息
方法1
尋找頁面中的xhr請求, 並得到實際的請求參數. 直接獲取相關搜索的請求返回代碼, 然後進行數據整理.
方法2
模擬瀏覽器操作, 比如使用Selenium 模塊.
『柒』 Python爬取動態生成的網頁(框架)需要具備哪些知識或者使用哪些庫
1、抓取網頁,模擬登陸等背後的通用的邏輯和原理;
2、以提取songtaste網頁中標題為例,詳解如何抓取網站並提取網頁內容;
3、以模擬登陸網路為例,詳解如何模擬登陸網站;
4、以抓取網易博客帖子中的最近讀者信息為例,詳解如何抓取動態網頁中的內容;
5、詳解了在模擬登陸和抓取動態網頁過程中,如何用對應的網頁分析工具,如IE9的F12,Chrome的Ctrl+Shift+J,Firefox的Firebug,去分析出對應的邏輯;
6、針對抓取網站,模擬登陸,抓取動態網頁,全部給出了完整的可用的,多種語言的示例代碼:Python,C#,Java,Go等。
『捌』 如何用Python爬取動態載入的網頁數據
動態網頁抓取都是典型的辦法
直接查看動態網頁的載入規則。如果是ajax,則將ajax請求找出來給python。 如果是js去處後生成的URL。就要閱讀JS,搞清楚規則。再讓python生成URL。這就是常用辦法
辦法2,使用python調用webkit內核的,IE內核,或者是firefox內核的瀏覽器。然後將瀏覽結果保存下來。通常可以使用瀏覽器測試框架。它們內置了這些功能
辦法3,通過http proxy,抓取內容並進行組裝。甚至可以嵌入自己的js腳本進行hook. 這個方法通常用於系統的反向工程軟體
『玖』 python如何爬取動態載入的網頁數據,例如我的打工網企業鏈接(需要底部的載入更多才會顯示)
content=urllib.urlopen(url).read()
forxin['LabelWageDes','LabelWorkDes','LabelEnterpriseDesc']:
pattern=re.compile(r'<spanid="ctl00_ContentPlaceHolder1_'+x+'">(.*?)</span></div>')
forvalueinpattern.findall(content):
split_values=value.split('<br/>')
forlineinsplit_values:
printline