【发布时间】:2016-02-25 06:55:33
【问题描述】:
我用的是python3.5和window10。
当我抓取一些页面时,我通常使用 urlopen 和 'for' 迭代来更改 url。像下面的代码。
from bs4 import BeautifulSoup
import urllib
f = open('Slave.txt','w')
for i in range(1,42):
html = urllib.urlopen('http://xroads.virginia.edu/~hyper/JACOBS/hjch'+str(i)+'.htm')
soup = BeautifulSoup(html,"lxml")
text = soup.getText()
f.write(text.encode("utf-8"))
f.close()
但是,我遇到了麻烦,因为 url 没有变化,虽然我点击了下一页并且网页内容发生了变化,就像图片一样。 url 没有变化,也没有模式。 enter image description here
网址中没有信号表明我可以捕捉到网站的变化。
http://eungdapso.seoul.go.kr/Shr/Shr01/Shr01_lis.jsp
网站在这里 我发现的线索是在分页课上。 我找到了一些指向下一页的链接,但我不知道如何使用此链接 在美丽汤。我认为 commonPagingPost 是开发者定义的函数。
<span class="number"><a href="javascript:;"
class="on">1</a>
<a href="javascript:commonPagingPost('2','10','Shr01_lis.jsp');">2</a>
<a href="javascript:commonPagingPost('3','10','Shr01_lis.jsp');">3</a>
<a href="javascript:commonPagingPost('4','10','Shr01_lis.jsp');">4</a>
<a href="javascript:commonPagingPost('5','10','Shr01_lis.jsp');">5</a></span>
如何使用 beutifulSoup4 打开或抓取所有这些网站? 当我使用 urlopen 时,我只是得到第一个页面。
【问题讨论】:
-
在您的网络浏览器中使用检查元素工具,然后在您手动单击页码时进行一些网络捕获。分页很可能是由 HTTP POST 请求处理的。如果您可以收集 POST 请求的有效负载是什么,那么您很可能能够制作您的请求标头,以便您可以在编号页面中移动。
标签: python-3.x beautifulsoup web-crawler urlopen