Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 清除重复链接时遇到的问题_Python_Web Scraping_Duplicates_Web Crawler - Fatal编程技术网

Python 清除重复链接时遇到的问题

Python 清除重复链接时遇到的问题,python,web-scraping,duplicates,web-crawler,Python,Web Scraping,Duplicates,Web Crawler,尝试了许多不同的链接,但每次我都得到相同的结果,那就是:第一个链接总是最后一个 import requests from lxml import html Unique=[] url="https://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los+Angeles%2C+CA" def DupRemoval(Address): MainLink="https://www.yellowpag

尝试了许多不同的链接,但每次我都得到相同的结果,那就是:第一个链接总是最后一个

import requests
from lxml import html
Unique=[]
url="https://www.yellowpages.com/search?search_terms=coffee&geo_location_terms=Los+Angeles%2C+CA"
def DupRemoval(Address):
    MainLink="https://www.yellowpages.com"
    response = requests.get(Address)
    Unique.append(Address)
    tree=html.fromstring(response.text)
    Pagination_link=tree.xpath("//div[@class='pagination']//a/@href")
    for Nextpage in Pagination_link:
        Blink=MainLink+Nextpage
        if Blink not in Unique:
            print(Blink)

DupRemoval(url)
制作的链接:

重复链接是“下一个”链接按钮,它是分页块中的最后一个按钮。此外,如果您继续前进到下一页,您还将在那里获得“Previous”链接

过滤掉它的一种快速方法是获取所有
A
元素,而不使用
class
属性:

//div[@class='pagination']//a[not(@class)]/@href

您是否考虑过使用集合而不是允许重复的列表?是的,cricket_007爵士,一开始就尝试过,但没有成功。那么URL字符串中的某些内容必须不同谢谢alecxe爵士,一如既往地为您提供有效的解决方案。您是编码方面的向导。顺便说一句,你认为我上面粘贴的代码除了xpath之外还可以吗?再次感谢。@SMth80谢谢!有一些事情我会改进的-考虑把它发布到一个伟大的方式获得反馈的工作代码。有一件事要知道,先生,关于XPath表达式。前几天你教我当类元素之间包含空格时如何编写xpath。这一次我试着这样做,但不幸的是它抛出了错误。我不明白我在这里是否犯了什么错误。如果你看看这个,我会很高兴的。再次谢谢你,阿列克西先生。//div[@class='pagination']//a[包含(concat(“”,@cla‌​ss、“)、“下一个”)]/@hr‌​ef“@SMth80当然,您的表达式实际上看起来不错-它与“下一个”链接的
href
值匹配。请注意,当我复制粘贴它时,那里有一些未打印的符号-请尝试使用此符号:
//div[@class='pagination']//a[contains(concat('',@class',),'next')]/@href
。谢谢。@SMth80这正是问题所在-你从视觉上看不出区别,但是
a
内部
@class
r
内部
@href
之后都有未打印的字符。当我将表达式粘贴到
$x()
函数中测试XPath时,我在chrome控制台中看到了这一点。希望有帮助。