吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2515|回复: 20
收起左侧

[Python 转载] selenium爬取某当书网24小时畅销书籍排名及价格

  [复制链接]
beyond1994 发表于 2022-7-20 23:04
本帖最后由 beyond1994 于 2022-7-20 23:06 编辑

大佬勿喷,记录一次使用selenium爬取自己想要的信息,里面的def函数不熟练和代码会有些乱,在这抛砖引玉望各位大佬指出更好的解决方法
[Python] 纯文本查看 复制代码
from selenium import webdriver
from pyquery import PyQuery as pq
from selenium.webdriver import ChromeOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

TOTAL_PAGE = 24
TIME_OUT = 24
IDNEX_URL = 'http://bang.dangdang.com/books/bestsellers/1-{page}'
import csv
f = open('book.csv',mode='a',encoding='utf-8',newline='')
#表头
csv_writer = csv.DictWriter(f,fieldnames=[
    '书名',
    '评论',
    '作者',
    '出版时间',
    '价格',
    '原价',
    '电子书价格',
    '书连接'

])
csv_writer.writeheader() #写入表头

def index_page(page):
    url = IDNEX_URL.format(page=page) #完善url
    return url

def scrape_page(url):
    option = ChromeOptions()
    option.add_argument('--headless')
    browser = webdriver.Chrome(options=option)
    browser.get(url)
    WebDriverWait(browser,TIME_OUT).until(EC.presence_of_all_elements_located((By.CSS_SELECTOR,'.bang_list')))
    html = browser.page_source
    doc = pq(html)
    ul = doc('.clearfix li').items()
    for i in ul:
        name = i('.name a').attr('title')
        comment = i('.star a').text() #评论
        author = i('.publisher_info a').attr('title') #作者和出版社
        time = i('.publisher_info span').text() #出版时间
        price = i('.price p:first-child .price_n').text() #原价
        discount = i('.price p:first-child .price_r').text()
        ebook = i('.price p:nth-child(2) .price_n').text()
        detailrul = i('.name a').attr('href')
        dict = {
            '书名':name,
            '评论':comment,
            '作者':author,
            '出版时间':time,
            '价格':price,
            '原价':discount,
            '电子书价格':ebook,
            '书连接':detailrul
        }
        csv_writer.writerow(dict)

def main():
    for page in range(1, TOTAL_PAGE + 1):
        urlindex = index_page(page)
        test = scrape_page(urlindex)
        print(test)

if __name__ == '__main__':
    main()

免费评分

参与人数 2吾爱币 +1 热心值 +2 收起 理由
jinhougou + 1 + 1 大佬讲的特别好。受益了感谢
RanTan + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| beyond1994 发表于 2022-7-21 17:45
jifeng2008 发表于 2022-7-21 11:16
因为浏览器渲染速度问题,你可以考虑多开浏览器,异步执行提高速度,根据你现在的同步模式估计爬取完这些数 ...

对的,在获取数据时发现了 感谢指出问题!
 楼主| beyond1994 发表于 2022-7-21 17:47
jzjbyq 发表于 2022-7-21 09:28
最近也想学习一下selenium,就是不知道这个是否可以后台运行,想要在如青龙面板中运行脚本

这个不晓得哦···
 楼主| beyond1994 发表于 2022-7-20 23:04
SuperZDK 发表于 2022-7-20 23:25
俺也刚学,插个眼
礼拜衣 发表于 2022-7-20 23:29
好东西,感谢分享
tys88 发表于 2022-7-21 07:37
支持原创,厉害
XiaoZouYu 发表于 2022-7-21 08:03
厉害,借鉴了
milu1123 发表于 2022-7-21 08:21
大大,你这个有什么教材吗??能推荐推荐吗?
airdear 发表于 2022-7-21 08:46
多多学习代码,才能多多开发好东西!谢谢你的分享~~~
jzjbyq 发表于 2022-7-21 09:28
最近也想学习一下selenium,就是不知道这个是否可以后台运行,想要在如青龙面板中运行脚本
sssguo 发表于 2022-7-21 10:30
感谢分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 12:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表