【问题标题】:Scraper returns no results for web scraper python with xpathScraper 没有返回带有 xpath 的 web scraper python 的结果
【发布时间】:2021-08-27 14:39:25
【问题描述】:

所以我正在尝试从以下站点抓取所有可用的工作: https://www.twitch.tv/jobs/careers/ 我检查了网络设置,那里什么都没有

所以我尝试使用 xpath 提取数据,但仍然没有。

    data = []
    headers = {
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:90.0) Gecko/20100101 Firefox/90.0"
    }
    url = "https://www.twitch.tv/jobs/careers/"
    page = requests.get(url, headers=headers)
    tree = html.fromstring(page.content)
    xpath = './/a/text()'
     
    jobs = tree.xpath(xpath)
    for job in jobs:
        print(job)
        

所有返回的是

Job Openings
Early Career
Equity & Inclusion
Blog
twitch.tv
Job Openings
Early Career
Equity & Inclusion
Blog
....................................
....................................
....................................
Stream
Watch
Develop
Advertise
twitch.tv
Jobs
Merch
Brand
TwitchCon
Meetups
News
Press
Bits
Subs
Turbo
Prime
Extensions
Sings
Legal
Help Center
Security
Twitter
Facebook
Instagram
Terms of service
Privacy Policy
Ad Choices
Cookie Policy
Partners
Affiliates

【问题讨论】:

    标签: web-scraping xpath python-requests


    【解决方案1】:

    职业网站使用svelte - 它适用于请求,但需要更多努力。您想要的所有信息都在页面中提供,您只需为它工作:-)

    所有作业信息都在一个base64编码的json字符串中。

    您需要获取此<script> 对象并在末尾解析大字符串:

    然后就可以使用base64库来解码了:

    import base64
    likeThis = base64.b64decode(mystr_encoded).decode('utf-8')
    

    为了让您知道自己在寻找什么,您可以将该 base64 字符串复制到 online decoder 中,然后您会看到 json:

    【讨论】:

      【解决方案2】:

      您正在寻找的工作是使用 Javascript 生成的。看看这部分(很长的 Base64 编码字符串):

      window.svelteSlabs["3f0161678d3ce5563fa00948dfb2245e"] = "eyJfYm9va3Nob3BfbmFtZSI6ImNhcmVlcnM....." 
      

      Base64 解码后,您将收到一个 JSON 字符串,其中包含您需要的所有内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-19
        • 1970-01-01
        • 2019-07-16
        • 2020-11-13
        • 2021-10-29
        • 2018-06-23
        相关资源
        最近更新 更多