如何解决如何一次正确地刮擦带有附加属性的1个URL?
我希望在其职业页面中为各个href抓取多个网站域。
我只想要工作的链接,而没有其他任何东西,而我发现最简单的方法是解析拼凑的响应并从特定的CSS路径提取href。
到目前为止,我的解决方案是创建2个字典,每个字典都具有一个通用键,即URL和Attribute。 然后,这些键具有预先定义的CSS路径和职业页面URL。
我将所有这些词典存储在python列表中,我的计划是从列表中一次调用每个词典,并使用关联的URL和属性作为scrapy的必需输入。
# Each List contains two dictionaries,# One containing the website's careers URL,# the other containing the location on their jobs container on that page.
# The below is an example but I will name the lists 1,2,3 etc so in a database I can call them easier.
List1= ["https://exampleurl.com/careers",".joblist a::attr(href)"]
List2 = ["https://exampleurl.com/en/Company/Career-Opportunities",".content a::attr(href)"]
Dicti = {"URL" : List1[0],"Att" : List1[1]}
这基本上就是我设置字典列表的方式。
我正在使用
start_urls = [
List1[Dicti["URL"]],List2[Dicti["URL"]]
]
然后我也要像这样解析数据
jobs = response.css(Dicti["Att"]).extract()
我认为这可能是我出问题的地方。尽管它确实加载了每个URL并从每个URL抓取了HTML,但是它并没有正确地从属性中解析。
我尝试一次抓取一个列表,尽管起始URL中只有1个列表。效果非常好,就是当我尝试在起始网址中输入多个列表时。
我到底在做什么错,也许我在阅读信息后误解了蜘蛛的工作方式。我本质上是想运行list1,然后停止蜘蛛程序并为list2运行新实例,同时说提取的数据。
任何有关如何克服这一问题的建议将不胜感激。
解决方法
任何一种都可以将您的数据组织成一个简短列表
urls = [
["https://exampleurl.com/careers",".joblist a::attr(href)"],["https://exampleurl.com/en/Company/Career-Opportunities",".content a::attr(href)"],...
]
然后遍历urls
并访问类似
for entry in urls:
url = entry[0]
attribute = entry[1]
或更短
for url,attribute in urls:
...
或列出小词典
urls = [
{'URL': "https://exampleurl.com/careers",'ATT': ".joblist a::attr(href)"},{'URL': "https://exampleurl.com/en/Company/Career-Opportunities",'ATT': ".content a::attr(href)"},...
]
然后遍历urls
并访问类似
for dict_ in urls:
url = dict_['URL']
attribute = dict_['ATT']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。