Scrapy -废弃xml网站Map,然后跟随链接

c7rzv4ha  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(148)

我开始学习scrapy,我想废弃一个sitemap.xml来废弃其中的所有页面,然后废弃页面中来自sitemap的特定链接。
例如:
在我的网站Map上,我有link1。我转到link1,在页面内部,我想废弃一个名为linkA的特定链接,以获得该链接的内容页。
首先,我为 parse_step1 定义了正则表达式规则,它允许我从站点Map中获取特定的url,它运行得很好。
然后,我不知道如何告诉我的刮刀 “从链接中删除页面,找到一个特定的网址并删除这个特定网址的页面内容”
我试图添加第二个由regex验证的规则,但我无法使其工作。

class SiteSpider(SitemapSpider):
    name = 'site'
    allowed_domains = ['domain.fr']
    # generate_start_urls()
    sitemap_urls = ["https://domain.fr/mainsitemap.xml"]
    sitemap_rules = [('^.*\/([a-zA-Z]{2})\/\/?.*', 'parse_step1'),
                     ('.*\/[0-9]{2}', 'parse_step2')
                     ]

有什么见解吗?
谢谢你

ffx8fchx

ffx8fchx1#

1.你有一个链接到一个网站传递到你的Scrapy脚本
1.在报废过程中,您会获得一些其他链接
1.将此链接传递到Scrapy脚本
1.重复播放
例如,如果站点1带有链接1和链接2,然后跟随链接1到达带有链接3的站点2......因此,在这里您可以使用Depth First Search algorithm来实现它。

  • 〉你可以把你收集到的所有链接存储在一个列表里。在解析函数的开头加一个计数器。所以每次你去到另一个链接--在你的计数器上加1--这将是当前链接的索引。一旦网站没有任何链接--你将去到最新的未解析链接(例如,当你得到两个函数,并遵循第一个)。你可以通过recursion调用你的函数来实现它。
    我还可以看到使用xml.etree.ElementTree的另一种方法(因为您使用的是xml文档):
import xml.etree.ElementTree as et 
import pandas as pd

def parse_xml(path) -> pd.DataFrame:
    tree = et.parse(path)
    root = tree.getroot()

    for child in root:
        attr1 = child[0].attrib['attr1']
        attr2 = child[0].attrib['attr2']
        attr3 = child[1].attrib['attr3']

相关问题