我已经在BS4中编写了一个小型的Web抓取器。我可以一次抓取一个页面的代码,这里是相关的代码。
import csv
from bs4 import BeautifulSoup
import requests
html = requests.get("http://www.gbgb.org.uk/resultsMeeting.aspx?id=129867").text
soup = BeautifulSoup(html,'lxml')
这段代码抓了一页,但我想一次刮掉多个页面(一个范围),所以我尝试像这样添加这个循环。
import csv
from bs4 import BeautifulSoup
import requests
for ace in range(129867, 129869):
html = requests.get("http://www.gbgb.org.uk/resultsMeeting.aspx?id= {ace}").text
soup = BeautifulSoup(html,'lxml')
当我运行代码时没有任何事情发生,我甚至没有起来任何常见的含糊不清的消息,暗示出现了什么问题。可能是语法,还是别的什么。可以帮助升值。
答案 0 :(得分:1)
你现在应该在循环中做所有事情。并且,您没有在网址中插入@when
值,ace
后面还有一个额外的空格。建立web-scraping session并使用id=
方法的params
关键字也是一个好主意。
修正版:
get()
请注意,此代码仍具有阻止性,它会一次处理一个页面。如果您想加快速度,请查看Scrapy
网页抓取框架。