【问题标题】:How to restrain duplicate links from getting parsed?如何阻止重复链接被解析?
【发布时间】:2018-01-01 11:59:04
【问题描述】:

我已经在 python 中编写了一些脚本来抓取该网页中可用的下一页链接,该网页目前运行良好。这个刮刀的唯一问题是它不能摆脱重复的链接。希望有人能帮我完成这个。我试过了:

import requests
from lxml import html

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

def nextpage_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"]:
            print(item.attrib["href"])

nextpage_links(page_link)

这是我得到的部分图像:

【问题讨论】:

  • 你做一个集合,添加所有处理的链接,并在处理之前检查链接是否已经存在。

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


【解决方案1】:

你可以使用 set 来达到目的:

import requests
from lxml import html

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

def nextpage_links(main_link):
    links = set()
    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"]:
            links.add(item.attrib["href"])

    return links

nextpage_links(page_link)

您也可以使用scrapy,默认情况下会限制重复。

【讨论】:

  • 感谢 Sumit Gupta,您的回答。有用。您应该从脚本中取出打印语句。顺便说一句,如果项目管道处理得当,scrapy 会处理重复项。
  • 谢谢,删除了print 声明:)
猜你喜欢
  • 1970-01-01
  • 2015-04-12
  • 2021-07-14
  • 2014-02-20
  • 1970-01-01
  • 1970-01-01
  • 2022-07-01
  • 2023-01-18
  • 2016-10-22
相关资源
最近更新 更多