【问题标题】:How to make my crawler parse data from start page如何让我的爬虫从起始页解析数据
【发布时间】:2017-12-31 23:44:15
【问题描述】:

我已经用 python 编写了一些代码来从一个 torrent 站点获取详细信息。但是,当我运行我的代码时,我发现了我预期的结果。这个爬虫的唯一问题是它跳过了第一页的内容[因为分页网址从 2 开始],我无法修复。对此的任何帮助都将非常感激。

import requests
from lxml import html

page_link = "https://yts.ag/browse-movies"
b_link = "https://yts.ag"

def get_links(main_link):
    response = requests.get(main_link).text
    tree = html.fromstring(response)
    for item in tree.cssselect('ul.tsc_pagination a'):
        if "page" in item.attrib["href"]:
            movie_details(b_link + item.attrib["href"])

def movie_details(link):
    response = requests.get(link).text
    tree = html.fromstring(response)
    for titles in tree.cssselect("div.browse-movie-wrap"):
        title = titles.cssselect('div.browse-movie-bottom a.browse-movie-title')[0].text
        link = titles.cssselect('div.browse-movie-year')[0].text
        rating= titles.cssselect('figcaption.hidden-xs h4.rating')[0].text
        genre = titles.cssselect('figcaption.hidden-xs h4')[0].text
        genre1 = titles.cssselect('figcaption.hidden-xs h4')[1].text
        print(title, link, rating, genre, genre1)

get_links(page_link)

【问题讨论】:

    标签: python python-3.x web-scraping css-selectors web-crawler


    【解决方案1】:

    为什么不在循环前调用 main_link 上的movie_details() 函数?

    def get_links(main_link):
        response = requests.get(main_link).text
        tree = html.fromstring(response)
        movie_details(main_link)
        for item in tree.cssselect('ul.tsc_pagination a'):
            if "page" in item.attrib["href"]:
                movie_details(b_link + item.attrib["href"])
    

    【讨论】:

    • 感谢 PRMoureu,您的回答。您的解决方案始终有效。我注意到现在许多网站都使用这种技术——不在分页网址中包含第一页。那么,没有更好的主意吗?
    • @SMth80 当起始页显示项目而不是“第 1 页”时,这似乎是最简单的方法,现在您还可以添加一个测试来检查您的查询收集的第一个页码,并且仅当页面从 2 开始时才使用此技巧
    • 我首先对其进行了测试,这就是为什么我回答说您的代码始终有效。还有一件事你应该考虑看看——当我抓取分页网址时,我发现我有几个重复的网址。有什么解决方法吗?闲暇之余,你可以考虑一下。感谢一万亿的一切,PRMoureu。
    猜你喜欢
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-04
    • 1970-01-01
    • 2018-01-26
    • 2021-02-19
    相关资源
    最近更新 更多