【发布时间】:2014-11-17 10:12:39
【问题描述】:
我目前正在写一个python爬虫,我想切换到下一页但是最好的做法是什么?
其实很简单,url 的结尾是 .html?page=1,所以我可以增加页码,但是有没有最好的做法让这件事尽可能干净?
我使用 urllib、url 解析和 beautifulSoup
#!/usr/bin/env python2
import urllib
import urlparse
from bs4 import BeautifulSoup
def getURL():
try:
fo = open("WebsiteToCrawl", "rw")
print ok() + "Data to crawl a store in : ", fo.name
except:
print fail() + "File doesn't exist, please create WebSiteTOCrawl file for store website listing"
line = fo.readlines()
print ok() + "Return website : %s" % (line)
fo.close()
i= 0
while i<len(line):
try:
returnDATA = urllib.urlopen(line[i]).read()
print ok() + "Handle :" + line[i]
handleDATA(returnDATA)
except:
print fail() + "Can't open url"
i += 1
def handleDATA(returnDATA):
try:
soup = BeautifulSoup(returnDATA)
for link in soup.find_all('a'):
urls = link.get('href')
try:
print urls
except:
print end() + "EOF: All site crawled"
def main():
useDATA = getURL()
handleDATA(useDATA)
if __name__ == "__main__":
main()
注意:我的代码比原来的要简单
【问题讨论】:
-
你写了什么??显示
-
是特定的网站爬虫吗?或者您应该抓取任何网站?如果有任何网站 - 没有正确答案,它们都非常不同,有些甚至没有“下一页”的概念。
-
@Rusty,我的爬虫有一个列表(大约 20 个网站),你说得对,它们都非常不同,但我尝试从通用功能开始,在特定功能之后
-
@Hackaholic 我已经添加了我的代码,但是我没有写任何关于下一页功能的内容。
-
我不能给你一个具体的答案,但我会在页面上找到“下一步”按钮并使用其中的链接转到下一页。这是因为手动更改页面可能包含一些限制,例如:在某些站点上,第一页没有显示带有 get 参数,某些站点会给您一个有效的页面,但是如果您超出限制,则为空页面,其他站点会给您最后可能的页面。但是,使用按钮,他们可能会停止显示它,或者让它转到同一页面等。
标签: python beautifulsoup web-crawler urllib