爬虫 有没有人告诉我怎么在这里显示加载中用了timesleep等待了一样显示等待和隐式等待都用了

爬虫 有没有人告诉我怎么在这里显示加载中用了timesleep等待了一样显示等待和隐式等待都用了

问题描述:

img


import urllib.request
import requests
import os
from lxml import etree
import re
import time

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36'}

def spider(base_url,headers):
    data1 = urllib.request.Request(base_url,headers=headers)

    data2 = urllib.request.urlopen(data1).read().decode('gbk')
    print(data2)
    selector = etree.HTML(data2)
    job_list = selector.xpath("/html/body/div[1]/div[2]/div[2]/div[2]/div[1]/div[1]/span")
    print(job_list)
url = "https://search.51job.com/list/010000%252c020000%252c030200%252c040000%252c080200,000000,0121,01,9,99,+,2,99.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
spider(url,headers)

你这个网页中的内容是通过js代码读取外部json数据来动态更新的。
requests只能获取网页的静态源代码,动态更新的内容取不到。
用requests只是获取网页的静态源代码。不会执行页面中的js代码,你用time.sleep()等待是没有用的。
只有用selenium 打开真正的浏览器。 才会执行页面中的js代码,用time.sleep()等待才有用。

或者是通过F12控制台分析页面数据加载的链接,找到真正json数据的地址进行爬取。

在页面上点击右键,右键菜单中选 "查看网页源代码"。

img


这样看到的才是网页的静态源代码。
如果这个网页的静态源代码中有你需要爬取的内容,就说明该页面没有动态内容,可以用requests爬取。
否则就说明该页面的内容是动态更新的,要用selenium 来爬取.

你题目的解答代码如下:

from selenium import webdriver
from lxml import etree
import time
def spider(base_url):
    driver = webdriver.Chrome()
    driver.get(base_url)
    time.sleep(5)
    data2 = driver.page_source
    print(data2)
    selector = etree.HTML(data2)
    job_list = selector.xpath("/html/body/div[2]/div[3]/div/div[2]/div[4]/div[1]/div/a/p[1]/span[1]/text()")
    print(job_list)
url = "https://search.51job.com/list/010000%252c020000%252c030200%252c040000%252c080200,000000,0121,01,9,99,+,2,99.html?lang=c&postchannel=0000&workyear=99&cotype=99&degreefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
spider(url)

img

如有帮助,望采纳!谢谢!

不知道🤷‍♂️