哈岁NB 发表于 2023-3-2 17:01:17

爬虫

请问一下,这个报错是因为什么呢

isdkz 发表于 2023-3-2 17:02:18

js 执行出错了

哈岁NB 发表于 2023-3-2 17:04:37

isdkz 发表于 2023-3-2 17:02
js 执行出错了

那他是什么情况呢出错呢,有时候爬的就不错,有时候就出错

哈岁NB 发表于 2023-3-2 17:05:22

isdkz 发表于 2023-3-2 17:02
js 执行出错了

这是代码
import requests
from bs4 import BeautifulSoup
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By
import bs4
import csv
import datetime
import time
time_start=time.time()
    # 生成日期数据
def create_assist_date(datestart=None, dateend=None):
    # 创建日期辅助表

    if datestart is None:
      datestart = '2016-01-01'
    if dateend is None:
      dateend = datetime.datetime.now().strftime('%Y-%m-%d')

    # 转为日期格式
    datestart = datetime.datetime.strptime(datestart, '%Y-%m-%d')
    dateend = datetime.datetime.strptime(dateend, '%Y-%m-%d')
    date_list = []
    date_list.append(datestart.strftime('%Y-%m-%d'))
    while datestart < dateend:
      # 日期叠加一天
      datestart += datetime.timedelta(days=+1)
      # 日期转字符串存入列表
      date_list.append(datestart.strftime('%Y-%m-%d'))
    return date_list


if __name__ == '__main__':
    date = create_assist_date("2006-04-05", '2006-6-30')
for i in range(len(date)):
    # 设置selenium使用chrome的无头模式
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    # 在启动浏览器时加入配置
    browser = webdriver.Chrome("D:/技能/chromedriver.exe",options=chrome_options)
    # 模拟浏览器打开网址
    browser.get('http://61.163.88.227:8006/hwsq.aspx?sr=0nkRxv6s9CTRMlwRgmfFF6jTpJPtAv87')
    # 等待加载,最多等待20秒
    js='document.getElementById("ContentLeft_menuDate1_TextBox11").removeAttribute("readonly");'
    browser.execute_script(js)
    browser.find_element(By.ID,'ContentLeft_menuDate1_TextBox11').clear()#清空原来的数据
    browser.find_element(By.ID,'ContentLeft_menuDate1_TextBox11').send_keys(date)
    browser.find_element(By.ID,'ContentLeft_Button1').click()#模拟点击按钮
    sleep(2)
    html=browser.page_source
    try:
      soup=BeautifulSoup(html,'html.parser')
      data=soup.find_all('table','mainTxt')
    except:
      print("找不到")
    f = open('data2006(4).csv', 'a+', newline="", encoding='gbk')
    writer = csv.writer(f)
    for tr in data('tbody').children:#注意因为data('tbody')是列表,必须加上
      if isinstance(tr,bs4.element.Tag):
            tds=tr('td')
            writer.writerow(,tds.string,tds.string,tds.string,tds.string,tds.string])
    for tr in data('tbody').children:#注意因为data('tbody')是列表,必须加上
      if isinstance(tr,bs4.element.Tag):
            tds=tr('td')
            writer.writerow(,tds.string,tds.string,tds.string,tds.string,tds.string])
    f.close()
time_end=time.time()
print('共运行{}s'.format(time_end-time_start))

isdkz 发表于 2023-3-2 17:11:58

哈岁NB 发表于 2023-3-2 17:04
那他是什么情况呢出错呢,有时候爬的就不错,有时候就出错

这个报错可能是因为你的 JavaScript 代码试图访问一个不存在或者未加载的元素,导致无法读取或者修改它的属性。你可以检查一下你的代码是否正确地定位到了你想要操作的元素,或者是否在 DOM 加载完成之后才执行了 JavaScript 代码。

isdkz 发表于 2023-3-2 17:12:39

哈岁NB 发表于 2023-3-2 17:05
这是代码

从 get 打开网址到 执行 js 之间没有等待,有时候可能页面还没有加载出来

哈岁NB 发表于 2023-3-2 17:13:12

isdkz 发表于 2023-3-2 17:12
从 get 打开网址到 执行 js 之间没有等待,有时候可能页面还没有加载出来

好的,感谢感谢
页: [1]
查看完整版本: 爬虫