爬虫:去下一页,贝斯特普拉蒂

2024-05-15 01:04:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在编写一个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:我把代码简化了


Tags: importurlmaindeflineokurllibprint
1条回答
网友
1楼 · 发布于 2024-05-15 01:04:38

如果它像更改url中的数字一样简单,那么就这样做。在

但是,你应该考虑如何知道何时停止。如果页面在底部返回分页详细信息(例如Back 1 2 3 4 5。。。然后你可以抓取这个元素的内容并找到18。在

另一种方法是解析每个页面上的分页链接,然后通过直接打开url或使用click方法单击next,直到next不再出现在页面上,来手动跟踪这些链接。我不直接使用urllib,但是可以非常容易地使用Selenium的python绑定(如果需要的话,可以使用PhantomJS驱动)。如果不需要处理AJAX,您也可以使用RoboBrowser,用更少的代码完成整个例程。在

相关问题 更多 >

    热门问题