python獲取網頁源碼
有的網站有流量控制,獲取不到很正常。
建議兩次獲取之間設定一個時間間隔,比如sleep 10秒,會好一些。
Ⅱ python如何抓取網頁源代碼中的字元串
使用正則匹配,列:
importrequests
importre
req=requests.get(url)
r=re.findall('<scriptsrc="(.*?)"></script>',req.text)#(.*?)非貪婪匹配
print(r)
自己網上找找python正則方面的知識
Ⅲ 如何便攜python獲取頁面內嵌框架中的源代碼
維普的網站很復雜,函數嵌套了很多層的,估計很難找到,而且進行了加密,我們用iRMS抓取頁面信息時,還是得先把所有頁面保存到本地,再進行抓取的
Ⅳ 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提取網頁中框架的源代碼
簡單的做個例子,框架路徑可以自己修改,調用像網路等網站時無法讀取其中源碼,涉及到一些安全問題,所以路徑要求是合法的允許訪問的路徑 function GetFrameInnerHtml(objIFrame) { var iFrameHTML = ""; if (objIFrame.contentDocument) { //針...
Ⅵ 用Python怎麼得到網頁中iframe的源代碼
想得到網易雲音樂 聽見好時光中的專輯信息(歌名及歌曲編號),但使用urllib2時urlopen出來的源代碼為網頁源代碼,而專輯信息是在iframe中的,無法在網頁源代碼中得到。
請問要怎麼獲取iframe的源代碼,或者怎麼直接獲取到專輯的信息
from selenium import webdriverbrowser = webdriver.Chrome()browser.get("om/#/album?id=145852")browser.switch_to_frame('g_iframe')print('專輯名字:', browser.find_element_by_class_name('f-ff2').text)for each in browser.find_elements_by_css_selector('a[href^=\/song]'):
print("歌曲名字:",each.text)
輸出:
專輯名字: Better Than a Fairy Tale
歌曲名字: Messenger
歌曲名字: Way of the World
歌曲名字: Princess
歌曲名字: Smiling Down On Me
歌曲名字: Evergreen
歌曲名字: Never Never Land
歌曲名字: Better Than a Fairy Tale
Ⅶ 新手python抓取網頁源碼處理
先用id定位,定位到了在用getatribute來獲取value
Ⅷ PYTHON獲取網頁源碼亂碼,怎麼辦
text 是系統自行解碼,部分網頁會不對。
content指定解碼,你的網頁是utf-8的,對應解碼就可以了
Ⅸ 求教:python 獲取的網頁源代碼與原網頁不同
沒有諾說的問題