[英]Web Scraping multiple pages using Regex in python
我正在嘗試從網站上抓取清單。 該列表擴展到4個不同的頁面。 URL中為每個頁面更改的參數為“偏移”。 因此對於,
第一頁偏移量= 0
第二頁偏移量= 100
第三頁偏移量= 200
第4頁偏移量= 300
我寫了以下代碼:-
import re
import urllib
urlHandle = urllib.urlopen("http://sampleurl.com?request=1&offset=0")
content = urlHandle.read()
pattern1 = re.compile('<a href="\/players\/\w{1}\/\w+\d{2}\.html">([^<]*)</a>')
for match in pattern1.finditer(content):
print(match.group(1))
上面的代碼檢索“ offset = 0”所需的值。 我在網址本身中附加了“ offset = 0”。 現在擴展到4頁,我嘗試編寫以下代碼
import re
import urllib
import urllib2
for i in range(0,400,100):
targeturl = "http://sampleurl.com?request=1&"
values = {'offset':i}
data = urllib.urlencode(values)
# req = urllib2.Request(targeturl,data)
finalurl = targeturl + data
urlHandle = urllib.urlopen(finalurl)
content = urlHandle.read()
pattern1 = re.compile('<a href="\/players\/\w{1}\/\w+\d{2}\.html">([^<]*)</a>')
for match in pattern1.finditer(content):
print(match.group(1))
不知何故它不返回任何東西。 我究竟做錯了什么?
<<編輯>>
我也在下面嘗試過。 也沒有用
import re
import urllib
import urllib2
for i in range(0,400,100):
targeturl = "http://sampleurl.com?request=1&offset=0"
urlHandle = urllib.urlopen(targeturl)
content = urlHandle.read()
pattern1 = re.compile('<a href="\/players\/\w{1}\/\w+\d{2}\.html">([^<]*)</a>')
for match in pattern1.finditer(content):
print(match.group(1))
您的第二個正則表達式格式錯誤:
'<a href="\/players\/\w{1}\/''\w+\d{2}\.html">([^<]*)</a>'
代替
'<a href="\/players\/\w{1}\/\w+\d{2}\.html">([^<]*)</a>'
那是錯字嗎?
另外,需要注意的另一點是,正則表達式無法完全解析HTML ( 除XHTML自包含標記之外,RegEx匹配打開的標記 )。 您應該真正考慮切換到HTML解析器(在python中,Scrapy在解析內容方面做得很好),否則您可能會冒着幾個小時被怪異的bug困擾的風險。
只是標題上寫着,“使用Regex抓取”有什么問題。 不要這樣 BeautifulSoap只是一個更好的工具。 用它。 您的生活將會改善,貓會坐在您的腿上,我什至沒有提到您的妻子/丈夫(如果您沒有,會為您)做什么。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.