不吃辣的禾小白 2020-12-31 16:09 采纳率: 50%
浏览 5

为啥爬不出数据,应该怎么修改?

# import pymysql
# conn=pymysql.connect(host='127.0.0.1',port=3306,user='root',passwd='NAVJ-W56S-3YUU-MVHV',db='test',charset='utf8')
# cursor=conn.cursor()
# sql='''create table if not exists tao(price varchar(20),info varchar(255),market varchar(20),
# num varchar(20),address varchar(20)) charset=utf8'''
# cursor.execute(sql)
# cursor.execute('show tables')

import requests
from lxml import html
url='https://s.taobao.com/search?spm=a21bo.2017.201867-main.20.5af911d9fqZT3q&q=%E9%9B%B6%E9%A3%9F&acm=lb-zebra-634493-8613077.1003.4.8193767&scm=1003.4.lb-zebra-634493-8613077.OTHER_15917461132498_8193767'
headers={"user-agent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
rqg=requests.get(url=url,headers=headers)
rqg.encoding='utf-8'
rqg_text=rqg.text
etree_tools=html.etree
format_html=etree_tools.HTML(rqg_text)
a=[]
b=[]
c=[]
d=[]
e=[]
nodes=format_html.xpath('//*[@id="mainsrp-itemlist"]/div/div')
for node in nodes:
    price=node.xpath('./div[1]/div/div[2]/div[1]/div[1]/strong/text()')
    for k in range(len(price)):
        a_string=str(price[k])
        a.append(a_string)
    info=node.xpath('./div[1]/div/div[2]/div[2]/a/text()')
    for k in range(len(info)):
        b_string=str(info[k])
        b.append(b_string)
    market=node.xpath('./div[1]/div/div[2]/div[3]/div[1]/a/span[2]')
    for k in range(len(market)):
        c_string=str(market[k])
        c.append(c_string)
    num = node.xpath('./div[1]/div/div[2]/div[1]/div[2]/text()')
    for k in range(len(num)):
        d_string=str(num[k])
        d.append(d_string)
    address = node.xpath('./div[1]/div/div[2]/div[3]/div[2]/text()')
    for k in range(len(address)):
        e_string=str(address[k])
        e.append(e_string)
print(a)
print(b)
print(c)
print(d)
print(e)
# for i in range(len(a)):
#     sql="insert into tao(price,info,market,num,address) values(%s,%s,%s,%s,%s)"
#     cursor.execute(sql,a[i],b[i],c[i],d[i],e[i])
# conn.commit()
# data=cursor.execute('select * from tao')
# data=cursor.fetchall()
# print(data)
# conn.close()
  • 写回答

1条回答 默认 最新

  • 生如夏花帅 2020-12-31 16:32
    关注

    现在大多数页面都是动态加载的, 你访问了页面之后,页面才访问接口获取数据, 所以你刚开始访问页面是没有数据的,你要采用动态加载的形式去加载页面

    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境