qq_59804066 2022-10-19 13:14 采纳率: 100%
浏览 60
已结题

python爬取相同div中的内容

img


想要爬取新书一列并保存到csv中,用pyquery
它在相同的div中,而且还有空缺值,没有新书的值为空

  • 写回答

2条回答 默认 最新

  • CSDN专家-showbo 2022-10-19 13:20
    关注
    from pyquery import PyQuery as pq 
    import requests
    import csv
     
    url='https://item.kongfz.com/Cxiaoshuo/w{}/'
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36'}
    alldata=[['书名','价格','新书价格','旧书价格','作者','出版社','出版日期','装订']]
    for i in range(99,100):#采集第99页,没有新书
        newurl=url.format(i)
        html=requests.get(newurl,headers=headers).text
        doc=pq(html)
        items=doc('#listBox .item').items()
        for item in items:
            book=pq(item.html())
            title=list(book('.title a').items())[0].text()
            attrs=list(book('.zl-isbn-info').items())[0].text().split('/')
            price=attrs[-1].strip()
            pricebox=list(book('.price-info a').items())
            newprice=""
            oldprice=""
            if len(pricebox)>1:#有新书和旧书
                newprice=pricebox[0].text().replace("新书","").strip()
                oldprice=pricebox[1].text().replace("旧书","").strip()
            else:#只有新书或者旧书其中一种
                s=pricebox[0].text()
                if '新书' in s:
                    newprice=s.replace("新书","").strip()
                else:
                    oldprice=s.replace("旧书","").strip()
            alldata.append([title,price,newprice,oldprice,attrs[0],attrs[1],attrs[2],attrs[3]])
           
    #有特殊字符串,需要用utf-8编码,不指定编码会出错,但是Excel打开utf-8编码csv会乱码。需要自己记事本打开另存为ansi编码的csv文件
    with open('item.kongfz.com.csv','w',newline='',encoding='utf-8')as f:
        writer = csv.writer(f)
        for data in alldata:
            writer.writerow(data)
     
     
    

    展开全部

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

报告相同问题?

问题事件

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

悬赏问题

  • ¥15 代写uni代码,app唤醒
  • ¥15 全志t113i启动qt应用程序提示internal error
  • ¥15 ensp可以看看嘛.
  • ¥80 51单片机C语言代码解决单片机为AT89C52是清翔单片机
  • ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
  • ¥15 minist数字识别
  • ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
  • ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
  • ¥15 网上下载的3DMAX模型,不显示贴图怎么办
  • ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部