Python 没有从会议记录中删除缺失的数据
我试图从《议事录》中搜集数据,这是英国国会众议院所有发言的官方逐字记录。这就是我要刮的地方:简而言之,我想刮除这一页上的每个“提及”容器,以及之后的50页 但我发现,当我的刮板“完成”时,它只收集了990个容器上的数据,而不是完整的1010个。20个容器上的数据丢失,就像跳过了一页。当我只将页面范围设置为(0,1)时,它无法收集任何值。当我将其设置为(0,2)时,它只收集第一页的值。要求它收集52页的数据也无济于事。我认为这可能是因为我没有给URL足够的时间来加载,所以我在scraper的爬网中添加了一些延迟。这没有解决任何问题 有人能给我提供一些关于我可能缺少什么的见解吗?我想确保我的刮板正在收集所有可用的数据Python 没有从会议记录中删除缺失的数据,python,database,web-scraping,beautifulsoup,missing-data,Python,Database,Web Scraping,Beautifulsoup,Missing Data,我试图从《议事录》中搜集数据,这是英国国会众议院所有发言的官方逐字记录。这就是我要刮的地方:简而言之,我想刮除这一页上的每个“提及”容器,以及之后的50页 但我发现,当我的刮板“完成”时,它只收集了990个容器上的数据,而不是完整的1010个。20个容器上的数据丢失,就像跳过了一页。当我只将页面范围设置为(0,1)时,它无法收集任何值。当我将其设置为(0,2)时,它只收集第一页的值。要求它收集52页的数据也无济于事。我认为这可能是因为我没有给URL足够的时间来加载,所以我在scraper的爬网中
pages = np.arange(0, 52)
for page in pages:
hansard_url = "https://hansard.parliament.uk/search/Contributions? searchTerm=%22civilian%20casualties%22&startDate=01%2F01%2F1988%2000%3A00%3A00&endDate=07%2F14%2F2020%2000%3A00%3A00"
full_url = hansard_url + "&page=" + str(page) + "&partial=true"
page = get(full_url)
html_soup = BeautifulSoup(page.text, 'html.parser')
mention_containers = html_soup.find_all('div', class_="result contribution")
time.sleep(randint(2,10))
for mention in mention_containers:
topic = mention.div.span.text
topics.append(topic)
house = mention.find("img")["alt"]
if house == "Lords Portcullis":
houses.append("House of Lords")
elif house == "Commons Portcullis":
houses.append("House of Commons")
else:
houses.append("N/A")
name = mention.find('div', class_="secondaryTitle").text
names.append(name)
date = mention.find('div', class_="").text
dates.append(date)
time.sleep(randint(2,10))
hansard_dataset = pd.DataFrame(
{'Date': dates, 'House': houses, 'Speaker': names, 'Topic': topics})
)
print(hansard_dataset.info())
print(hansard_dataset.isnull().sum())
hansard_dataset.to_csv('hansard.csv', index=False, sep="#")
非常感谢帮助我解决此问题的任何帮助。服务器在第48页返回空容器,因此从第1页到第51页的总结果为1000(包括): 印刷品:
...
Page 41...
Page 42...
Page 43...
Page 44...
Page 45...
Page 46...
Page 47...
Page 48...
Empty container! # <--- here is the server error
Page 49...
Page 50...
Page 51...
Date House Speaker Topic
0 14 July 2014 House of Lords Baroness Warsi Gaza debate in Lords Chamber
1 3 March 2016 House of Lords Lord Touhig Armed Forces Bill debate in Grand Committee
2 2 December 2015 House of Commons Mr David Cameron ISIL in Syria debate in Commons Chamber
3 3 March 2016 House of Lords Armed Forces Bill debate in Grand Committee
4 27 April 2016 House of Lords Armed Forces Bill debate in Lords Chamber
.. ... ... ... ...
995 18 June 2003 House of Lords Lord Craig of Radley Defence Policy debate in Lords Chamber
996 7 September 2004 House of Lords Lord Rea Iraq debate in Lords Chamber
997 14 February 1994 House of Lords The Parliamentary Under-Secretary of State, Mi... Landmines debate in Lords Chamber
998 12 January 2000 House of Commons The Minister of State, Foreign and Commonwealt... Serbia And Kosovo debate in Westminster Hall
999 26 February 2003 House of Lords Lord Rea Iraq debate in Lords Chamber
[1000 rows x 4 columns]
。。。
第41页。。。
第42页。。。
第43页。。。
第44页。。。
第45页。。。
第46页。。。
第47页。。。
第48页。。。
空容器!#如果您使用请求
和美化组
,那么添加时间毫无意义——它不是Selenium,不运行JavaScript,也不需要等待。最好将HTML保存在文件中并在浏览器中打开,以查看得到的内容。也许有一些不同于你所期望的。也许会有一些关于这个问题的信息。或者可能第一个页面有不同的URL,或者当我使用page=0
在浏览器中运行此页面时,您必须在没有page=0的情况下加载它,然后我看到加载搜索结果时出错。请稍后再试。
标准规则:应使用print()
检查变量中的值。通过这种方式,您应该检查每个页面上有多少项,如果某个页面给出的值较少,则在浏览器中检查此页面。可能有不同的项目有不同的标签,等等。哇,非常感谢你,你是对的,这在查找服务器错误方面真的很有效!但我有一个问题:当我手动转到第48页时,我看到容器不是空的。这是否意味着刮板无法拾取这些容器,我应该手动输入这些值?对不起,如果这是一个愚蠢的问题,所有的帮助是感激的!参考:@xrichervis当你手动运行时,服务器错误出现在第41页:我认为结果的排序不同。是的,我在发表评论后注意到了这一点。奇怪的我认为我对这些缺失的值无能为力。再次感谢你的帮助,安德烈!
...
Page 41...
Page 42...
Page 43...
Page 44...
Page 45...
Page 46...
Page 47...
Page 48...
Empty container! # <--- here is the server error
Page 49...
Page 50...
Page 51...
Date House Speaker Topic
0 14 July 2014 House of Lords Baroness Warsi Gaza debate in Lords Chamber
1 3 March 2016 House of Lords Lord Touhig Armed Forces Bill debate in Grand Committee
2 2 December 2015 House of Commons Mr David Cameron ISIL in Syria debate in Commons Chamber
3 3 March 2016 House of Lords Armed Forces Bill debate in Grand Committee
4 27 April 2016 House of Lords Armed Forces Bill debate in Lords Chamber
.. ... ... ... ...
995 18 June 2003 House of Lords Lord Craig of Radley Defence Policy debate in Lords Chamber
996 7 September 2004 House of Lords Lord Rea Iraq debate in Lords Chamber
997 14 February 1994 House of Lords The Parliamentary Under-Secretary of State, Mi... Landmines debate in Lords Chamber
998 12 January 2000 House of Commons The Minister of State, Foreign and Commonwealt... Serbia And Kosovo debate in Westminster Hall
999 26 February 2003 House of Lords Lord Rea Iraq debate in Lords Chamber
[1000 rows x 4 columns]