Scrapy Xpath略微改变页面

时间:2016-04-15 13:50:47

标签: python xpath scrapy

我正试图从www.upwork.com

获取一些招聘广告的信息

大部分内容都可以通过简单的Xpath进行抓取,但事实并非如此 有些页面有额外的项目(客户所在国家,客户金额等等)或者有点不同(固定费率工作增加了一个工作价格项目)

这会破坏项目的Xpath。

这些项目没有您可以使用的描述性类名,如您在页面的源代码中所示。

固定费率工作,包含有关客户的许多详细信息 https://www.upwork.com/job/Education-portal-development_~0151e2b32662a05e13/

小时工作,客户细节较少: https://www.upwork.com/job/Create-countdown-timer-which-resets-every-night_~01d2dad2d68abd7b8d/

项目和xpath的一些示例:

l.add_xpath('clientactivehires', '//*[@id="layout"]/div[2]/div[3]/div[2]/p[5]/span/text()', re = '(\d*) Active')
l.add_xpath('fixedratevariable', '//*[@id="layout"]/div[2]/div[3]/div[1]/div[1]/div[2]/div/div[2]/p/strong/text()')
l.add_xpath('fixedrate', '//*[@id="layout"]/div[2]/div[3]/div[1]/div[1]/div[2]/div/div[2]/p/strong/text()')
l.add_xpath('hired', '//*[@id="layout"]/div[2]/div[3]/div[1]/div[2]/div[2]/div[1]/div/p[3]/span/text()', re = '(\d*)')
l.add_xpath('interviewing', '//*[@id="layout"]/div[2]/div[3]/div[1]/div[2]/div[2]/div[1]/div[2]/p[3]/text()', re = '(\d*)')
l.add_xpath('jobdescription', '//*[@id="layout"]/div[2]/div[3]/div[1]/div[2]/div[1]/p/text()')

我尝试了很多东西,但是使用xpath我无法使其工作,它可以在1页上工作,但不能可靠地在其他页面上工作。

我该怎么做才能让它发挥作用?

1 个答案:

答案 0 :(得分:0)

我会依赖"关于客户"而不是获取以下所有import unittest class A: def __init__(self, a, b, c): self.a = a self.b = b self.c = c def __eq__(self, other): return self.a == other.a and self.b == other.b and self.c == other.c a1, a2, a3 = ('a1', 'a2', 'a3') b1, b2, b3 = ('b1', 'b2', 'b3') c1, c2, c3 = ('c1', 'c2', 'c3') def my_method(): return [ A(a1, b1, c1), A(a2, b2, c2), A(a3, b3, c3) ] class BasicsTestCase(unittest.TestCase): def test_list_of_objects(self): self.assertListEqual(my_method(), [A(a1, b1, c1), A(a2, b2, c2), A(a3, b3, c3)]) 兄弟姐妹的文字:

p

您可能需要改进逻辑并对此附加信息进行分组。