① 如何用python爬蟲直接獲取被js修飾過的網頁Elements
對於這種動態載入的網站,建議使用第三方庫selenium爬取。
它可以完全模擬瀏覽器,等待網站全部載入完成後再進行數據的自動獲取。
對於主流的ChromeDriver、InternetExplorerDriver、FirefoxDriver、OperaDriver都支持,網站上的元素也支持多種選擇器,如class、id、xpath等。
但是用習慣以後,對於這種非純靜態頁面,離開selenium感覺就完全不會爬蟲了。
② 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)
[python]view plain
#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])
③ python3.9。在網頁源代碼中爬取的漢字代碼如何轉換回漢字
以前總是覺得,爬蟲是個很高大上的東西,就像盜取別人的數據一樣。現在才知道,爬蟲能爬到的,都是網頁上能看到的,說白了就是別人給你看的。
所謂爬蟲,就是先獲取網頁的源代碼,然後從源代碼中篩選出自己想要的資源,比如網頁上的圖片、視頻等文件,甚至網頁上的文字。接下來,我們就用Python來爬取網頁上的圖片。
首先我們先獲取網站的源碼。
然後就是從萬千的源碼中解析出自己想要的資源了,我這里想要的是網站上的圖片。
個人覺得,這個爬蟲考驗的,還是正則表達式的功底,怎麼寫好正則表達式,才能將所有想要的資源都解析出來,其他的都比較簡單。
以下是我從網頁上爬下來的部分圖片。
④ 網路爬蟲的問題:如何搜索到網頁中所有的鏈接並將這些鏈接所在的網頁的源代碼讀取出來
語言不是問題,要源碼嘛.好像是不可以的.(我不知道你說的源碼是不是我印像中的源碼)
你要解釋源碼,然後根據解釋的結果找到其中所有的鏈接,再把鏈接裡面的內容下載下來................(注意不要重復下載.)
⑤ python爬蟲:帶你了解爬蟲應當怎麼做
本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯系我們以作處理
python2
爬蟲:從網頁上採取數據
爬蟲模塊:urllib,urllib2,re,bs4,requests,scrapy,xlml
1.urllib
2.request
3.bs4
4.正則re
5種數據類型
(1)數字Number
(2)字元串String
(3)列表List[] 中文在可迭代對象就是unicode對象
(4)元組Tuple()
(5)字典Set{}
爬蟲思路:
1.靜態 urlopen打開網頁------獲取源碼read
2.requests(模塊) get/post請求----獲取源碼 text()方法 content()方法(建議)
3.bs4 能夠解析HTML和XML
-- coding:utf-8 –
from bs4 import BeautifulSoup
1
html=「
2018.1.8 14:03
」
soup=BeautifulSoup(html,『html.parser』) #解析網頁
print soup.div
2從文件中讀取
html=』』
soup=BeautifulSoup(open(『index.html』),『html.parser』)
print soup.prettify()
4.獲取所需信息
⑥ Python爬網頁
1、網路爬蟲基本原理
傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定
停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析演算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然後,它將根
據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上述過程,直到達到系統的某一條件時停止。
2、設計基本思路
正如你所說,先到微博登陸頁面模擬登錄,抓取頁面,從頁面中找出所有URL,選擇滿足要求的URL文本說明,模擬點擊這些URL,重復上面的抓取動作,直到滿足要求退出。
3、現有的項目
google project網站有一個項目叫做sinawler,就是專門的新浪微博爬蟲,用來抓取微博內容。網站上不去,這個你懂的。不過可以網路一下「python編寫的新浪微博爬蟲(現在的登陸方法見新的一則微博)「,可以找到一個參考的源碼,他是用python2寫的。如果用python3寫,其實可以使用urllib.request模擬構建一個帶cookies的瀏覽器,省去對cookies的處理,代碼可以更加簡短。
4、此外
看下網路爬蟲的網路,裡面很多比較深入的內容,比如演算法分析、策略體系,會大有幫助,從理論角度提升代碼的技術層次。
⑦ 爬蟲 python urlib2怎麼獲取html源碼中的數據
urllib2的open方法可以直接打開並獲取你所訪問的url頁面源碼
案例:
response=urllib2.urlopen('你的URL')
html=response.read()
printhtml
其他更多高級用法可以參閱urllib2模塊文檔
⑧ 爬蟲,爬取的網頁源碼為啥中間一部分缺失
獲取不到動態載入的內容,除非內容直接在html頁面了,這就是為什麼動態載入的內容,js動態生成的內容不利於seo的原因
⑨ 用「檢查」和「F12」看到的網頁源代碼不一樣,那麼Python爬蟲要怎麼爬取
看你爬什麼咯?如果是網頁,那就是頁面代碼;如果是制定內容,那爬取的時候就給定匹配的關鍵字,返回你指定的數據(字串,list,json都可以)
⑩ httpClient怎麼獲取網頁中js執行完後的網頁源碼
我做過爬蟲,對這個比較了解,如果網頁源碼中有些內容是js渲染過來的,那你通過HttpClient直接取肯定取不到,但是這些數據一般都是通過非同步請求傳過來的(一般都是通過ajax的get或者post方式)。那麼你可以通過火狐瀏覽器的firebug或者chrome的審查元素,在網路選項中找到這個請求地址,再用HttpClient請求一次就可以拿到你想要的數據,但這些數據可能不是網頁源碼,一般都是json字元串。