爬虫 有没有人告诉我怎么在这里显示加载中用了timesleep等待了一样显示等待和隐式等待都用了
问题描述:
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°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
spider(url,headers)
答
这样看到的才是网页的静态源代码。
如果这个网页的静态源代码中有你需要爬取的内容,就说明该页面没有动态内容,可以用requests爬取。
否则就说明该页面的内容是动态更新的,要用selenium 来爬取.
你这个网页中的内容是通过js代码读取外部json数据来动态更新的。
requests只能获取网页的静态源代码,动态更新的内容取不到。
用requests只是获取网页的静态源代码。不会执行页面中的js代码,你用time.sleep()等待是没有用的。
只有用selenium 打开真正的浏览器。 才会执行页面中的js代码,用time.sleep()等待才有用。
或者是通过F12控制台分析页面数据加载的链接,找到真正json数据的地址进行爬取。
在页面上点击右键,右键菜单中选 "查看网页源代码"。
这样看到的才是网页的静态源代码。
如果这个网页的静态源代码中有你需要爬取的内容,就说明该页面没有动态内容,可以用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°reefrom=99&jobterm=99&companysize=99&ord_field=0&dibiaoid=0&line=&welfare="
spider(url)
如有帮助,望采纳!谢谢!
答
不知道🤷♂️