如何使用 python 从浏览器中提取网页内容
How to extract content from webpage as seen from browser using python
我正在尝试提取此网站“https://www.ncbi.nlm.nih.gov/nucleotide/209750423?report=genbank#”上的数据。当我使用 urllib 提取内容时,我可以提取通过右键单击浏览器后选择 'view page source' 获得的数据,但我想要的是要提取的实际序列 'atggctgaga tgaaaaacct gaaaattgag gtggtgcgct ataacccgga....'通过右键单击浏览器并选择 'inspect element' 可以看到,但不能通过 'view page source'
我使用的代码是
f = open('out.html', 'w')
response = urllib.urlopen("https://www.ncbi.nlm.nih.gov/nucleotide/209750423?report=genbank")
f.write(response.read())
f.close()
您应该花时间实际查看要抓取的页面。它只是一个加载一些 JS 应用程序的页面。然后应用程序从另一个地方加载实际数据。
https://www.ncbi.nlm.nih.gov/sviewer/viewer.fcgi?val=209750423&db=nuccore&dopt=genbank&retmode=text
顺便说一下,在抓取在线内容之前一定要检查版权问题。
数据是js加载的,所以你可以得到下面的数据:
import requests
from pyquery import PyQuery
r = requests.get("https://www.ncbi.nlm.nih.gov/sviewer/viewer.fcgi?val=209750423&db=nuccore&dopt=genbank&extrafeat=976&fmt_mask=0&retmode=html&withmarkup=on&log$=seqview&maxplex=3&maxdownloadsize=1000000")
pq = PyQuery(r.content)
div = pq(".ff_line")
data = []
for d in div:
data.append(d.text)
print data
我正在尝试提取此网站“https://www.ncbi.nlm.nih.gov/nucleotide/209750423?report=genbank#”上的数据。当我使用 urllib 提取内容时,我可以提取通过右键单击浏览器后选择 'view page source' 获得的数据,但我想要的是要提取的实际序列 'atggctgaga tgaaaaacct gaaaattgag gtggtgcgct ataacccgga....'通过右键单击浏览器并选择 'inspect element' 可以看到,但不能通过 'view page source'
我使用的代码是
f = open('out.html', 'w')
response = urllib.urlopen("https://www.ncbi.nlm.nih.gov/nucleotide/209750423?report=genbank")
f.write(response.read())
f.close()
您应该花时间实际查看要抓取的页面。它只是一个加载一些 JS 应用程序的页面。然后应用程序从另一个地方加载实际数据。
https://www.ncbi.nlm.nih.gov/sviewer/viewer.fcgi?val=209750423&db=nuccore&dopt=genbank&retmode=text
顺便说一下,在抓取在线内容之前一定要检查版权问题。
数据是js加载的,所以你可以得到下面的数据:
import requests
from pyquery import PyQuery
r = requests.get("https://www.ncbi.nlm.nih.gov/sviewer/viewer.fcgi?val=209750423&db=nuccore&dopt=genbank&extrafeat=976&fmt_mask=0&retmode=html&withmarkup=on&log$=seqview&maxplex=3&maxdownloadsize=1000000")
pq = PyQuery(r.content)
div = pq(".ff_line")
data = []
for d in div:
data.append(d.text)
print data