我正试图从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页上工作,但不能可靠地在其他页面上工作。
我该怎么做才能让它发挥作用?
答案 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
您可能需要改进逻辑并对此附加信息进行分组。