python 使用selenium模塊爬取同一個url下不同頁的內容(瀏覽器模擬人工翻頁)


 

頁面翻頁,下一頁可能是一個新的url

也有可能是用js進行頁面跳轉,url不變,解決方法是實現瀏覽器模擬人工翻頁

 

目標:爬取同一個url下不同頁的數據(上述第二種情況)

 

url:http://www.gx211.com/collegemanage/search.aspx?id=1&xxcity=1

中國高校之窗,我要爬取北京市所有的學校列表,共有四頁數據,四頁都是同一個url。

部分頁面如圖:

 

 

找到“下一頁”按鈕的源碼,確認是用js進行的跳轉。

 

工具:

  •  selenium
  •     pyquery
  •     火狐瀏覽器

 

 代碼:

from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from pyquery import PyQuery as pq

#
# 爬取北京市所有的學校
#

browser = webdriver.Firefox()  # 創建一個瀏覽器對象,這里還可以使用chrome等瀏覽器
try:
    BJuniv = []
    browser.get('http://www.gx211.com/collegemanage/search.aspx?id=1&xxcity=1') # 獲取並打開url
    for r in range(4):
        html = browser.page_source  # 獲取html頁面
        doc = pq(html)              # 解析html
        table = doc('.content tbody')  # 定位到表格
        table.find('script').remove()  # 除去script標簽

        list_cont = table('tr').items()  # 獲取tr標簽列表
        for i in list_cont:
            univ = (i.text()).split()  # 獲取每個tr標簽中的文本信息,返回一個列表
            print(univ)
            BJuniv.append(univ)
        nextpagebutton = browser.find_element_by_xpath('//*[@id="Lk_Down"]')  # 定位到“下一頁”按鈕
        nextpagebutton.click()  # 模擬點擊下一頁
        wait = WebDriverWait(browser, 10)  # 瀏覽器等待10s

finally:
    browser.close()  # 關閉瀏覽器
    with open("北京市所有大學.txt", "wt", encoding='utf8') as out_file:  # 存儲為txt格式
        out_file.write('全國各省學校名單:\n\n')
        for u in BJuniv:
            out_file.write(str(u) + '\n')

 

運行過程:自動打開瀏覽器,輸入url,獲取頁面,點擊下一頁,重復直到循環結束。(過程看不到很細致的,跳轉比較快)

 

運行結果(部分):

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM