python爬動態
❶ 如何用python爬取js動態生成內容的頁面
抓取js動態生成的內容的頁面有兩種基本的解決方案
1用dryscrape庫動態抓取頁面
js腳本是通過瀏覽器來執行並返回信息的,所以,抓取js執行後的頁面,一個最直接的方式就是用python模擬瀏覽器的行為。WebKit 是一個開源的瀏覽器引擎,python提供了許多庫可以調用這個引擎,dryscrape便是其中之一,它調用webkit引擎來處理包含js等的網頁!
2 selenium web測試框架
selenium是一個web測試框架,它允許調用本地的瀏覽器引擎發送網頁請求,所以,它同樣可以實現抓取頁面的要求。
❷ 如何用Python爬取動態載入的網頁數據
動態網頁抓取都是典型的辦法
直接查看動態網頁的載入規則。如果是ajax,則將ajax請求找出來給python。 如果是js去處後生成的URL。就要閱讀JS,搞清楚規則。再讓python生成URL。這就是常用辦法
辦法2,使用python調用webkit內核的,IE內核,或者是firefox內核的瀏覽器。然後將瀏覽結果保存下來。通常可以使用瀏覽器測試框架。它們內置了這些功能
辦法3,通過http proxy,抓取內容並進行組裝。甚至可以嵌入自己的js腳本進行hook. 這個方法通常用於系統的反向工程軟體
❸ python爬蟲怎麼獲取動態的網頁源碼
一個月前實習導師布置任務說通過網路爬蟲獲取深圳市氣象局發布的降雨數據,網頁如下:
心想,爬蟲不太難的,當年跟zjb爬煎蛋網無(mei)聊(zi)圖的時候,多麼清高。由於接受任務後的一個月考試加作業一大堆,導師也不催,自己也不急。
但是,導師等我一個月都得讓我來寫意味著這東西得有多難吧。。。今天打開一看的確是這樣。網站是基於Ajax寫的,數據動態獲取,所以無法通過下載源代碼然後解析獲得。
從某不良少年寫的抓取淘寶mm的例子中收到啟發,對於這樣的情況,一般可以同構自己搭建瀏覽器實現。phantomJs,CasperJS都是不錯的選擇。
導師的要求是獲取過去一年內深圳每個區每個站點每小時的降雨量,執行該操作需要通過如上圖中的歷史查詢實現,即通過一個時間來查詢,而這個時間存放在一個hidden類型的input標簽里,當然可以通過js語句將其改為text類型,然後執行send_keys之類的操作。然而,我失敗了。時間可以修改設置,可是結果如下圖。
為此,僅抓取實時數據。選取python的selenium,模擬搭建瀏覽器,模擬人為的點擊等操作實現數據生成和獲取。selenium的一大優點就是能獲取網頁渲染後的源代碼,即執行操作後的源代碼。普通的通過 url解析網頁的方式只能獲取給定的數據,不能實現與用戶之間的交互。selenium通過獲取渲染後的網頁源碼,並通過豐富的查找工具,個人認為最好用的就是find_element_by_xpath("xxx"),通過該方式查找到元素後可執行點擊、輸入等事件,進而向伺服器發出請求,獲取所需的數據。
[python]view plain
#coding=utf-8
fromtestStringimport*
fromseleniumimportwebdriver
importstring
importos
fromselenium.webdriver.common.keysimportKeys
importtime
importsys
default_encoding='utf-8'
ifsys.getdefaultencoding()!=default_encoding:
reload(sys)
sys.setdefaultencoding(default_encoding)
district_navs=['nav2','nav1','nav3','nav4','nav5','nav6','nav7','nav8','nav9','nav10']
district_names=['福田區','羅湖區','南山區','鹽田區','寶安區','龍崗區','光明新區','坪山新區','龍華新區','大鵬新區']
flag=1
while(flag>0):
driver=webdriver.Chrome()
driver.get("hianCe/")
#選擇降雨量
driver.find_element_by_xpath("//span[@id='fenqu_H24R']").click()
filename=time.strftime("%Y%m%d%H%M",time.localtime(time.time()))+'.txt'
#創建文件
output_file=open(filename,'w')
#選擇行政區
foriinrange(len(district_navs)):
driver.find_element_by_xpath("//div[@id='"+district_navs[i]+"']").click()
#printdriver.page_source
timeElem=driver.find_element_by_id("time_shikuang")
#輸出時間和站點名
output_file.write(timeElem.text+',')
output_file.write(district_names[i]+',')
elems=driver.find_elements_by_xpath("//span[@onmouseover='javscript:changeTextOver(this)']")
#輸出每個站點的數據,格式為:站點名,一小時降雨量,當日累積降雨量
foreleminelems:
output_file.write(AMonitorRecord(elem.get_attribute("title"))+',')
output_file.write(' ')
output_file.close()
driver.close()
time.sleep(3600)
- 文件中引用的文件testString只是修改輸出格式,提取有效數據。
#Encoding=utf-8
defOnlyCharNum(s,oth=''):
s2=s.lower()
fomart=',.'
forcins2:
ifnotcinfomart:
s=s.replace(c,'')
returns
defAMonitorRecord(str):
str=str.split(":")
returnstr[0]+","+OnlyCharNum(str[1])
- 一小時抓取一次數據,結果如下:
[python]view plain
❹ 如何用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如何爬取動態數據實現方法
你指的是動態渲染生成的頁面的爬取吧,類似於微博的下拉刷新這種?如果是,分析找到它的ajax請求,一般是xhr。其實也可以考慮使用selinum模塊(但願我沒拼錯這個模塊名)
❻ 如何用Python爬蟲抓取JS動態篩選內容
打開瀏覽器,以google chrome為例,輸入你上面的網址。
然後按F12打開調試窗口,然後嘗試勾選左邊某一個選項,馬上可以看到右邊的調試窗口有東西輸出。
找到第一個輸出的行,點擊header,可以看到每一個都是用的post方法。
所以只需要構造相應的header並post上去,就可以得到你想要的數據了。
而這個發放返回的是json數據,然後編碼成dict格式 提取出數據就可以了。
❼ python爬蟲,抓取動態內容,判斷後更新變數
把每次抓取的結果存儲起來,然後與上一次的結果比較不就可以了。
❽ python3 怎樣爬取動態載入的網頁信息
方法1
尋找頁面中的xhr請求, 並得到實際的請求參數. 直接獲取相關搜索的請求返回代碼, 然後進行數據整理.
方法2
模擬瀏覽器操作, 比如使用Selenium 模塊.
❾ 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
❿ Python爬取動態生成的網頁(框架)需要具備哪些知識或者使用哪些庫
1、抓取網頁,模擬登陸等背後的通用的邏輯和原理;
2、以提取songtaste網頁中標題為例,詳解如何抓取網站並提取網頁內容;
3、以模擬登陸網路為例,詳解如何模擬登陸網站;
4、以抓取網易博客帖子中的最近讀者信息為例,詳解如何抓取動態網頁中的內容;
5、詳解了在模擬登陸和抓取動態網頁過程中,如何用對應的網頁分析工具,如IE9的F12,Chrome的Ctrl+Shift+J,Firefox的Firebug,去分析出對應的邏輯;
6、針對抓取網站,模擬登陸,抓取動態網頁,全部給出了完整的可用的,多種語言的示例代碼:Python,C#,Java,Go等。