看板 Python 關於我們 聯絡資訊
我正想挑戰用Python爬蟲,但越爬越發現好像碰到大魔王... 由於是aspx網頁,用requests去造訪網頁不會抓到動態表格的全部內容, 不知道我有沒有理解錯? 但是我在實作selenium的過程中發現,原本我用requests還能抓到的資料, 到了selenium卻抓不到,只剩空list? import requests from selenium import webdriver from time import sleep from lxml import etree, html url = "https://www.ntuh.gov.tw/labmed/檢驗目錄/Lists/2015/BC.aspx" browser = webdriver.Chrome() browser.get(url) # The url is visited with Chrome correctly root = etree.fromstring(browser.page_source, etree.HTMLParser()) root.xpath("//table[@class='ms-listviewtable']/tr") # It gives me [] while browser.page_source is a string of html 到這裡就可以發現這個xpath沒抓到東西。 但是,實際上這個xpath在我用requests抓時是有用的: result = "" while result == "": try: # Certificate is not verified to bypass the SSLError # Not secure though result = requests.get(url, verify = False) break except: sleep(5) continue # Transform it into an element tree root = etree.fromstring(result.content, etree.HTMLParser()) # Parse the information with Xpath root.xpath("//table[@class='ms-listviewtable']/tr") # It gives me many elements of tr tags 這裡有兩個問題: 1. 這種狀況,如果要繼續用selenium的話要如何解決? 2. 我在網路上找到可以透過browser.find_element_by_xpath(xpath).click()的方式, 去按「下一頁」,但是在我想爬的這個網站裡, 上一頁跟下一頁按鈕的xpath我不知道怎麼分...有人可以提點一下嗎? 或有其它的方式? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.159.22 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1523377226.A.CB7.html
s860134: 1. 我記得是因為 etree 在爬 html 結構時不計入 tbody 04/11 04:16
s860134: 所以在 selenium 要用 table 耙仔帶的時候要多一層tbody 04/11 04:20
s860134: //table[@class='ms-listviewtable']/tbody/tr 04/11 04:21
s860134: 你這個網站上一頁下一頁都有個 <td id="pagingWPQ2next"> 04/11 04:22
s860134: 沒有什麼無法區分的問題吧 04/11 04:22
clsmbstu: 你給的xpath可以抓到東西,感謝! 04/11 09:54
clsmbstu: 但本文兩段都是用etree爬的,我還是不懂為什麼有此差別 04/11 09:55
clsmbstu: 可以請你再解說詳細一點嗎? 04/11 09:55
clsmbstu: 另外,就是因為上下頁都有<td id="pagingWPQ2next">,我 04/11 09:56
clsmbstu: 要怎麼控制我不是點到上一頁而是下一頁? 04/11 09:57
clsmbstu: 等等,我發現上一頁是<td id="pagingWPQ2prev">,抱歉 04/11 10:50