c爬虫抓取网页数据(和StudyTitile的元素包含title元素的titletitle网页爬取实验数据)

优采云 发布时间: 2021-12-25 21:03

  c爬虫抓取网页数据(和StudyTitile的元素包含title元素的titletitle网页爬取实验数据)

  现在我们要从这个页面抓取实验数据

  url = 'https://clinicaltrials.gov/ct2/results?age_v=&gndr=&type=&rslt=With&Search=Apply'

  首先打开浏览器加载网址

  from selenium import webdriver

from time import sleep

driver = webdriver.Chrome()

driver.get(url) #浏览器加载网页url

sleep(3)

  2. 获取网页中的网址

  观察到只有 Status 和 Study Titile 列中的元素收录

title,因此我们尝试通过 title 元素从许多元素中过滤出这两列中的元素。 “有结果”中点击的内容就是我们想要的,所以我们要区分“状态”和“研究标题”下的内容,观察这两个元素的区别,发现“状态”下的URL收录

'/结果/',所以我们用这个来区分。

  

  

  scr1 = driver.find_elements_by_xpath('//td/a[@title]') #找出表格中含有属性title的元素

scr2= [x.get_attribute('href') for x in scr1] #获取元素中的网址

n01 = []

for i01 in scr2:

if i01.find('/results/') != -1: 若网址中不包含'/results/',返回-1

n01.append(i01)

  所以n01的列表就是第一页所有实验的实验结果网址。

  3.向实验结果网站发起请求,获取http状态码

  import requests

def qingqiu(url):

r = requests.get(url)

r.encoding = 'utf-8'

return r.text

  4.获取所有实验的实验结果

  import re

from bs4 import BeautifulSoup

nl = []

for i01 in n01:

a = qingqiu(i01)

bs01 =BeautifulSoup(a,'lxml')#使用BeautifulSoup解析代码

da = bs01.find_all('script')

for i in range(len(da)):

a.replace(str(da[i]),'')

bs01 =BeautifulSoup(a,'lxml')

n001=bs01.find_all('tr') #搜索当前tag的所有tag子节点,此处tag为tr

nr_list=[]

for i001 in range(len(n001)):

n02 = n001[i001].find_all(re.compile('th|td'))

n002=[x.text.replace('\n',' ').strip() for x in n02]

if len(n002)>1 and n002[0].strip():

# print('存入。。。。')

nr_list=nr_list+n002 #列表拼接

nl = nl+nr_list

  这里的 nl ​​是 10 个实验的实验结果。

  以后会详细介绍,请指正~

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线