16713720339 发表于 2022-12-10 22:26

python进行模拟操作之后获取网页文本数据

from urllib.parse import urlencodeimport requestsfrom lxml import etreeimport reimport timefrom selenium import webdriver
for uuu in range(1,11):    if uuu!=10:      uuu='0'+str(uuu)    url = "http://www.henanjianan.com/tiku/dianhan/"+str(uuu)+".html"    ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"        #点击模拟   driver = webdriver.Edge()
    driver.get('http://www.henanjianan.com/tiku/dianhan/10.html')   #打开网页
    time.sleep(10)                                 #加载等待
    driver.find_element_by_xpath("/html/body/form/div/input").click()#点击按钮    time.sleep(3)    alertObject = driver.switch_to.alert    print(alertObject.text)# 打印提示信息    time.sleep(1)    alertObject.accept()# 点击确定按钮
#获取url的html    r = requests.get(url)    #r=    r.encoding="utf-8"
    content = r.text          #获取HTML的内容    print(content)    html = etree.HTML(content)#分析HTML,返回DOM根节点    print(html)    #path = //div[@class='billboard-bd']//td//a/text()
    for i in range(2,32):      #选择题题目      orders = html.xpath("/html/body/form/div/div["+str(i)+"]/div/text()")[0]      with open("D:/test2.txt","a+") as f:            f.write(orders)# 自带文件关闭功能,不需要再写f.close()
打算爬取题目和答案,但网页需要打开之后点击下面的提交才会出现答案
用webdriver打开浏览器模拟点击之后,我才需要获取网页中的一些文本,但是使用request转换html获取又会重新打开网页,小弟不懂怎么自动打开网页,进行完模拟点击之后,在新的网页代码中获取文本
求大佬相助,不胜感激

16713720339 发表于 2022-12-10 22:30

啊,排版是乱的,再发一次
from urllib.parse import urlencode
import requests
from lxml import etree
import re
import time
from selenium import webdriver

for uuu in range(1,11):
    if uuu!=10:
      uuu='0'+str(uuu)
    url = "http://www.henanjianan.com/tiku/dianhan/"+str(uuu)+".html"
    ua = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240"
   
    #点击模拟
    driver = webdriver.Edge()

    driver.get('http://www.henanjianan.com/tiku/dianhan/10.html')   #打开网页

    # driver.maximize_window()                      #最大化窗口

    time.sleep(10)                                 #加载等待

    driver.find_element_by_xpath("/html/body/form/div/input").click()#点击按钮
    time.sleep(3)
    alertObject = driver.switch_to.alert
    print(alertObject.text)# 打印提示信息
    time.sleep(1)
    alertObject.accept()# 点击确定按钮

    r = requests.get(url)
    #r=
    r.encoding="utf-8"

    #获取网页的html,爬取文本
    content = r.text          #获取HTML的内容
    print(content)
    html = etree.HTML(content)#分析HTML,返回DOM根节点
    print(html)
    #path = //div[@class='billboard-bd']//td//a/text()

    for i in range(2,32):
      #选择题题目
      orders = html.xpath("/html/body/form/div/div["+str(i)+"]/div/text()")
      with open("D:/test2.txt","a+") as f:
            f.write(orders)# 自带文件关闭功能,不需要再写f.close()



wanpojie 发表于 2022-12-10 22:48

http://www.henanjianan.com/tiku/dianhan/1.html打不开

Starrys 发表于 2022-12-10 23:05

没看懂你的意思 给你个小建议 driver = webdriver.Edge() 不要放到循环里 容易卡死或者说浪费内存

Starrys 发表于 2022-12-10 23:08

driver.close() 关闭当前页面
driver.quit()退出浏览器

Starrys 发表于 2022-12-10 23:12

16713720339 发表于 2022-12-10 22:30
啊,排版是乱的,再发一次
from urllib.parse import urlencode
import reques ...

看懂了上面配置好url了driver用的是固定的地址所以不会打开新网页
17行改成driver.get(url)

hayreddin 发表于 2022-12-10 23:30

学习学习

繁华什锦 发表于 2022-12-10 23:42

学习学习。多谢分享,试一下

adx123456 发表于 2022-12-11 06:01

好好学习

cloud2010 发表于 2022-12-11 06:16


试试使用playwright,可以自动录制脚本

你在浏览器手动操作一遍,就能生成模拟操作的python代码

再修改或用于学习都很简单
页: [1] 2
查看完整版本: python进行模拟操作之后获取网页文本数据