我目前正在编写一个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()
NB:我把代码简化了
如果它像更改url中的数字一样简单,那么就这样做。在
但是,你应该考虑如何知道何时停止。如果页面在底部返回分页详细信息(例如Back 1 2 3 4 5。。。然后你可以抓取这个元素的内容并找到18。在
另一种方法是解析每个页面上的分页链接,然后通过直接打开url或使用click方法单击next,直到next不再出现在页面上,来手动跟踪这些链接。我不直接使用urllib,但是可以非常容易地使用Selenium的python绑定(如果需要的话,可以使用PhantomJS驱动)。如果不需要处理AJAX,您也可以使用RoboBrowser,用更少的代码完成整个例程。在
相关问题 更多 >
编程相关推荐