爬虫+爬取书籍售卖信息+项目实战

前言

本文适合爬刚刚入门的新手,通过这篇文章的代码可以使刚刚入门的新手更加理解爬虫的基本原理,享受爬虫抓取信息的快捷与方便。
本文爬取的网站为一个二手书售卖的网站起始地址为:http://www.jiushujie.com/
此次项目的目的是将搜索到的书籍售卖信息爬取下来,并以csv表格的格式保存到指定文件目录下。
ps:(添加博主qq482947879,备注爬虫,可以一起交流学习。)

代码区

# 需要的模块有一下四个,如果还没有下载这些模块的就需要先下载好相应的这些模块
import requests
from requests.exceptions import RequestException
from lxml import etree
import csv
import time

# 设置好请求头
headers = {
    'Content-Type': 'text/plain; charset=UTF-8',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.85 Safari/537.36',
    'Origin': 'http://www.jiushujie.com/',
    'Referer': 'http://www.jiushujie.com/'
}
# 尝试对网页源代码进行爬取
def get_one_page(url, headers):
    try:
        response = requests.get(url, headers=headers)
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        print('网页爬取失败!请稍后再试!')
        return None
def main():
    gjz = input('请输入你想要爬取的书籍的类型:')
    j = input('请输入你要爬取的页数:')
    way = input('请输入你要保存文件的路径:')
    f = open(f"{way}", 'a', newline='')
    writer = csv.writer(f)
    writer.writerow(('书名', '作者/出版社', '价格', '折扣', '商品描述')) # 写入表头
    for i in range(1, int(j)+1):
        time.sleep(1)
        url = 'http://www.jiushujie.com/sell?ajax=yw0&'+f"page={i}&q={gjz}"
        print(f"正在爬取第{i}页!")
        html1 = get_one_page(url, headers)
        with open('html.html', 'a', encoding='utf-8') as fp:
            fp.write(html1)
        html = etree.HTML(html1)
        name_list = html.xpath('//div[@class="items"]/div')
        if len(name_list) == 0:
            print('未查到与该书籍相关的信息!\n')
            return 0
        for name in name_list:
            title = name.xpath('.//div[@class="title"]/a/text()')[0].strip()  # 商品的标题
            publisher = name.xpath('.//div[@class="detail padding_10"]/text()')[1].strip()   # 商品的出版社
            price = name.xpath('.//div[@class="detail padding_10"]/text()')[2].strip()      #  商品的价格
            discount = name.xpath('.//div[@class="detail padding_10"]/text()')[3].strip()   #  商品的折扣
            describe = name.xpath('.//div[@class="detail padding_10"]/text()')[4].strip()   #  商品的描述
            writer.writerow((title, publisher, price, discount, describe))
        print(f"第{i}页爬取完成!"+'\n')
main()


以上就是上述爬虫项目的全部代码

如何使用此代码,及一些注意事项

建议使用以下步骤测试该代码

1.首先可以新建一个保存数据的文件夹
在桌面上新建一个保存数据的文件夹
2.复制文件夹的路径
复制文件夹的路劲,为后续代码的运行做铺垫
3.打开源代码并运行
先左击鼠标右键,再点击运行此代码
4.填写好相关要求

这里一步需要注意的是:
1.旧书街网页最大页数是99页,如果输入的页数超过99页,后面爬取到的信息可能会重复!!!
2.这里的文件路径在刚刚上面复制的步骤上需要加上几个步骤:
把单斜杠换成双斜杠,在最后面还要添加文件名并且格式为.csv

注意的一些事项

1.保存的格式为csv所以当文件名后缀输入其他的格式,可能会得不到想要的数据
2.文件名一定要输入正确

效果图

正在爬取相应的内容!!

爬虫自动生成了一个文件

爬取到的数据

以上就是本文的全部内容,有什么疑问的地方欢迎大家留下评论。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

想清楚再敲

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值