pingwujinchu 2021-08-18 15:01 采纳率: 100%
浏览 139
已结题

python爬取数据存入excel中的问题

这也不知道什么情况,一页的数据全存在一行了,总共爬了3页,存了3行数据
img


```python
import requests
from lxml import etree
import pandas as pd
import pyttsx3
def star_data(page):
    url = 'https://search.bilibili.com/all?keyword=web%E6%B8%97%E9%80%8F&from_sourc=webtop_search&spm_id_from=333.851&page={}'.format(page)
    headers = {
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
    response = requests.get(url, headers=headers)
    print('获取数据中')
    if response.status_code == 200:
            return response
    else:
            print('服务器已实行反爬')
def send_data(page):
    print('正在获取第{}页数据'.format(page))
    dict={'name':[],
          'time':[],
          'href':[]
          }
    list1=[]
    for i in range(1,page+1):
        response=star_data(i)
        html = etree.HTML(response.text)
        for item in html.xpath('//ul[@class="video-list clearfix"]'):
            name=item.xpath('//a[@class="title"]/text()')
            dict['name'].append(','.join(name))
            time=html.xpath('//span[@class="so-imgTag_rb"]/text()')
            dict['time'].append(','.join(time))
            href=html.xpath('//a[@class="title"]/@href')
            dict['href'].append(','.join(href))
            # print(dict)
    return dict
def clean_data(page):
    data=send_data(page)
    fd=pd.DataFrame(data)
    print('存储第{}页数据中....'.format(page))
    fd.to_csv('b站数据.csv',header=True,index=False)
if __name__=='__main__':
    page=int(input('请输入要爬取的页数'))
    clean_data(page)
    k=1
    while k<4:
        pyttsx3.speak('爬取数据结束')
        k+=1

```

  • 写回答

2条回答 默认 最新

  • 想换辆新车 2021-08-18 15:24
    关注

    不清楚你爬取的网页结构是什么? 看你代码及执行结果猜测: 第一页中只有一个《ul》,你取了它之下所有的《a》和《span》的内容, 然后用“,”将它们连接成一个字符串,结果就是一个《ul》下的内容存为一行. 如果你想每个《li》的内容为一行,就要修改 下面这句xpath的路径:

     for item in html.xpath('//ul[@class="video-list clearfix"]'):
    
    

    改成对 li 遍历, 因为不知网页结构,所以无法给出具体修改方案
    把返回的reponse.text贴出来, 我就可以给出修改方案

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月26日
  • 已采纳回答 8月18日
  • 创建了问题 8月18日

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果