1. 程式人生 > >Python爬蟲入門——3.2 動態網頁爬蟲

Python爬蟲入門——3.2 動態網頁爬蟲

當你搜索百度圖片時(百度圖片),你會發現,當你向下滑動滑鼠,就會自動載入下一頁的圖片資料,但是網頁的URL卻沒有改變。從而你就無法通過一般的構造URL的方法來抓取網頁資料。這是由於網頁使用了非同步載入技術。

非同步載入技術

傳統的網頁如果需要更新網頁資訊就需要重新載入整個網頁的資料資訊。因此會存在載入速度慢的情況從而導致使用者體驗感差。而採用了非同步載入技術來載入網頁資料就會通過後臺與伺服器之間少量的資料交換就可以完成資料更新。

接下來我們介紹如何抓取使用非同步載入技術的網頁資料。以簡書網為例(https://www.jianshu.com/u/9104ebf5e177)網頁為《從零開始學Python網路爬蟲》作者羅攀的簡書主頁。我們的目的是爬取使用者文章題目

1、在Chrome瀏覽器按F12或者在動態上右鍵->檢查,不斷下滑瀏覽其他動態發現 網頁的URL一直是https://www.jianshu.com/u/9104ebf5e177沒有發生改變。選擇Network->XHR->Response選項會觀察到額網頁返回的是XML檔案。

2、不斷下滑網頁可以觀察Name欄的資料,可以獲得前幾頁的URL

https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page=2/u

https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page=3/u

https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page=4/u

3、通過分析網頁資料我們可以得到有規律的URL,然後再進行資料爬取就容易多了。下面上程式碼:

import requests
import re
#構造URL列表
urls = ['https://www.jianshu.com/u/9104ebf5e177/?order_by=shared_at&page={0}/u'.format(str(i)) for i in range(1,20)]
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'}
for url in urls:
    res = requests.get(url,headers = headers)
    selsctor = re.findall('<a class="title" target="_blank" href="/p/.*?">(.*?)</a>',res.content.decode('utf-8'),re.S)
    for i in selsctor:
        print(i)

相關推薦

Python爬蟲入門——3.2 動態網頁爬蟲

當你搜索百度圖片時(百度圖片),你會發現,當你向下滑動滑鼠,就會自動載入下一頁的圖片資料,但是網頁的URL卻沒有改變。從而你就無法通過一般的構造URL的方法來抓取網頁資料。這是由於網頁使用了非同步載入技術。 非同步載入技術 傳統的網頁如果需要更新網頁資訊就需要重新載入整個

Python 學習入門(6)—— 網頁爬蟲

                Python抓取網頁方法,任務是批量下載網站上的檔案。對於一個剛剛入門python的人來說,在很多細節上都有需要注意的地方,以下就分享一下在初學python過程中遇到的問題及解決方法。1、Python抓取網頁import urllib,urllib2url = "http://

Python爬蟲入門——3.1 多程序爬蟲

我們上次爬取了鬥破蒼穹全文小說,並儲存到本地TXT檔案,但是下載速度超級慢(不排除我這垃圾i5電腦的原因),我都玩了一盤王者榮耀,還沒有下載完成。j究其原因是我們只是應用了單程序爬取,所以爬取速度大打折扣。鑑於此我們本節介紹多程序爬蟲。 首先簡單介紹一下多程序。通常我們的計

Python爬蟲入門 | 3 爬蟲必備Python知識

Python Python入門 Pyth這是一個適用於小白的Python爬蟲免費教學課程,只有7節,讓零基礎的你初步了解爬蟲,跟著課程內容能自己爬取資源。看著文章,打開電腦動手實踐,平均45分鐘就能學完一節,如果你願意,今天內你就可以邁入爬蟲的大門啦~ 好啦,正式開始我們的第三節課《爬蟲必備Python知識》

python爬蟲系列(3.2-lxml庫的使用)

一、基本介紹 1、lxml 是 一個HTML/XML的解析器,主要的功能是如何解析和提取 HTML/XML 資料。 2、lxml和正則一樣,也是用 C 實現的,是一款高效能的 Python HTML/XML 解析器,我們可

Python爬蟲實戰專案2 | 動態網站的抓取(爬取電影網站的資訊)

1.什麼是動態網站? 動態網站和靜態網站的區別在於,網頁中常常包含JS,CSS等動態效果的內容或者檔案,這些內容也是網頁的有機整體。但對於瀏覽器來說,它是如何處理這些額外的檔案的呢?首先瀏覽器先下載html檔案,然後根據需要,下載JS等額外檔案,它會自動去下載它們,如果我們要爬取這些網頁中的動態

python爬蟲入門學習2

0.urlopen()方法的timeout引數用於設定什麼:           用於設定超時時間(答:timeout 引數用於設定連線的超時時間,單位是秒)   1. 如何從 urlopen() 返回的物件中獲取 HTTP

Python學習筆記--Python 爬蟲入門 -18-2 Scrapy-shell

# scrapy-shell - scrapy shell教程 - shell  - 啟動     - Linux: ctr+T,開啟終端,然後輸入scrapy shell "url:xxxx"     - windows: scrapy shell "url:xxx"

Python爬蟲入門教程 2-100 妹子圖網站爬取

字典 註意 while import 我們 分鐘 基礎 便是 訪問 前言 從今天開始就要擼起袖子,直接寫Python爬蟲了,學習語言最好的辦法就是有目的的進行,所以,接下來我將用10+篇的博客,寫爬圖片這一件事情。希望可以做好。 為了寫好爬蟲,我們需要準備一個火狐瀏覽器,還

python--爬蟲51job(3.2)

這裡是做另一個任務----也就是將正則表示式的內容細化,使提取的內容更精細。 下面是核心程式碼: def get(html): items=(0,0,0,0,0,0,0) reg = re.compile(r'class="t1 ">.*?<a

Python爬蟲入門——3.4 模擬登入

宣告:參考資料“ 從零開始學Python網路爬蟲 ”作者:羅攀,蔣仟機械工業出版社 Cookie是網站為了識別使用者身份從而儲存在使用者本地終端上的資料,因此我們可以利用Cookie來模擬登入網站。繼續以豆瓣網為例。 進入豆瓣網https://www.douban.com

Python爬蟲入門——3.6 Selenium 爬取淘寶資訊

上一節我們介紹了Selenium工具的使用,本節我們就利用Selenium跟Chrome瀏覽器結合來爬取淘寶相關男士羽絨服商品的資訊,當然你可以用相同的方法來爬取淘寶其他商品的資訊。我們要爬取羽絨服的價格、圖片連線、賣家、賣家地址、收貨人數等資訊,並將其儲存在csv中 fr

Python爬蟲入門——3.3 表單互動 Post

迄今為止,我們爬取的網頁都是未登入狀態下的網頁資訊,當我們想要獲取登入之後的資訊該怎麼做呢?這時我們只需要使用requests庫自帶的post方法即可。使用post的過程比較簡單,我們只需要構造講一個字典,然後利用post上傳到網頁即可。使用方法如下: import req

7-13爬蟲入門之BeautifulSoup對網頁爬取內容的解析

obj logs utf 進行 pan 審查 pri 全球 網頁爬取 通過beautifulsoup對json爬取的文件進行元素審查,獲取是否含有p標簽 # -*- coding:utf-8 -*- from lxml import html import request

網路爬蟲:爬取動態網頁

import requests from bs4 import BeautifulSoup res = requests.get('http://news.sina.com.cn/c/nd/2017-06-12/doc-ifyfzhac1650783.shtml') res.encoding = '

學習資料-----python入門到精通100G,包括爬蟲、電子書、各種視訊教程,你不可錯過!

Python 究竟有多火?目前在程式語言排行榜中,Python當之無愧的成為了第一!Python已經逐漸成為所有IT技術的首選語言。幾乎所有IT領域都將Python作為首選程式語言。 Python崇尚優美、清晰、簡單,是一個優秀並廣泛使用的語言。它是Googl

爬蟲入門學習2

0.urlopen()方法的timeout引數用於設定什麼:           用於設定超時時間 1. 如何從 urlopen() 返回的物件中獲取 HTTP 狀態碼? 用getcode()方法 2. 在客戶端和伺服器之間進行請求-響應時,最常用的是哪兩種方法?

Python十分適合用來開發網頁爬蟲

Python十分適合用來開發網頁爬蟲,理由如下:1、抓取網頁自身的介面比較與其他靜態程式語言,如java,c#,c++,python抓取網頁文件的介面更簡練;比較其他動態指令碼語言,如perl,shell,python的urllib2包供給了較為完整的訪問網頁文件的API。(當然ruby也是很好的挑

python爬蟲入門教程(一):開始爬蟲前的準備工作

爬蟲入門系列教程: 前言   學習python爬蟲也有一段時間了,各種爬蟲技術多多少少也接觸過一些。因為有學弟學妹說想學爬蟲,我萌生了寫個簡單的python爬蟲教程的想法。   一來,給學弟學妹們提供方便,提供一個入門的渠道;二來,總結這些天自身所

java爬蟲系列(四)——動態網頁爬蟲升級版

我之前推薦過大家使用seimiagent+seimicrawler,但是經過我多次試驗,在爬取任務過多,比如執行緒數超過幾十的時候,seimiagent會經常崩潰,當然這也和啟動seimiagent的伺服器有關。 鑑於seimiagent的效能