【发布时间】:2017-08-22 18:21:51
【问题描述】:
我正在尝试从web of science 中删除数据
这是我要使用的specific page。
下面是我用来提取摘要的代码:
import lxml
import requests
url = 'https://apps.webofknowledge.com/full_record.do?product=WOS&search_mode=GeneralSearch&qid=2&SID=Q1yAnqE4al4KxALF7RM&page=1&doc=3&cacheurlFromRightClick=no'
s = requests.Session()
d = s.get(url)
soup1 = etree.HTML(d.text)
这是我在 Chrome 中通过复制 xpath 得到的 xpath:
//*[@id="records_form"]/div/div/div/div[1]/div/div[4]/p/text()
所以我试着像这样得到摘要
path = '//*[@id="records_form"]/div/div/div/div[1]/div/div[4]/p/text()'
print(soup1.xpath(path))
但是,我只是热了一个空列表!然后我尝试了另一种方法来测试 xpath。
首先,我将特定页面保存为本地html文件。
with open('1.html','w',encoding='UTF=8') as f:
f.write(d.text)
f.close()
然后,打开文件
s.mount('file://',FileAdapter())
d = s.get('file:///K:/single_paper.html')
soup2 = etree.HTML(d.text)
soup2.xpath('//*[@id="records_form"]/div/div/div/div[1]/div/div[4]/p/text()')
它给了我想要的摘要!谁能告诉我为什么会这样?
奇怪当我尝试以保存本地文件的方式对另一个页面执行这些步骤时,它再次返回一个空列表!
我检查了 Chrome 给出的 xpath 对于这两个页面是相同的。
那么谁能告诉我我的代码有什么问题以及如何修复它?
【问题讨论】:
-
你可以尝试更具体的xpath表达式
(//div[@class="block-record-info"])[2]/p/text()。 -
@vold 抱歉,您能再解释一下吗?我不太明白。
标签: python google-chrome xpath web-scraping