使用python从同一网页中的多个链接中提取数据

时间:2018-01-19 08:23:59

标签: python web-scraping beautifulsoup python-requests

我是python和网络抓取的新手。

我正试图从这个链接中提取有关临床诊断测试的测试组件的信息。 https://labtestsonline.org/tests-index

测试索引包含各种临床测试的测试组件名称列表。单击其中每个名称将转到另一个页面,其中包含有关各个测试组件的详细信息。从这个页面我想提取一些有共同问题的部分。

最后将一个包含测试组件名称的数据框放在一列中,将每个问题放在常见问题中作为其余列(如下所示)。

Names    how_its_used    when_it_is_ordered  what_does_test_result_mean

到目前为止,我只能设法获得测试组件的名称。

import requests
from bs4 import BeautifulSoup
url = 'https://labtestsonline.org/tests-index'
response = requests.get(url)
soup = BeautifulSoup(response.content, 'lxml' )
print(soup.prettify())
l = [] #get the names of the test components from the index
for i in soup.select("a[hreflang*=en]"):
l.append(i.text)
import pandas as pd
names = pd.DataFrame({'col':l})  # convert the above list to a dataframe

1 个答案:

答案 0 :(得分:1)

我建议你看看开源网络抓取库Scrapy。它可以帮助您解决在抓取网站时可能遇到的许多问题:

  • 点击每页上的链接。
  • 从与特定模式匹配的网页中抓取数据,例如你可能只想抓取/详细页面,而其他页面只是抓取链接爬行。
  • lxml和css选择器。
  • 并发,允许您同时抓取多个页面,这将大大加快您的刮刀速度。

这很容易上手,有很多资源可以使用Scrapy库构建简单到高级的Web抓取工具。