首页 > 编程语言 >python爬取数据爬取图书信息

python爬取数据爬取图书信息

时间:2024-06-17 20:14:07浏览次数:26  
标签:span python 爬取 str strip print import class 图书

# encoding=utf-8

import json  # json 包,用于读取解析,生成json格式的文件内容
import time
from random import randint

import requests  # 请求包  用于发起网络请求
from bs4 import BeautifulSoup  # 解析页面内容帮助包
from lxml import etree
import re  # 正则表达式
import csv

# sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8') #改变标准输出的默认编码

# 全局变量
booknamelist = []
authorlist = []
typelist = []
contentlist = []
novel = []


def get_data(url):
    """
    获取数据
    :param url: 请求网址
    :return:返回请求的页面内容
    """
    # 请求头,模拟浏览器,否则请求会返回418
    header = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'}
    time.sleep(randint(1, 8))#控制爬虫速率以保证不会很快被网站察觉否则爬两页就会被封
    resp = requests.get(url=url, headers=header)  # 发送请求
    resp.encoding = 'utf-8'
    if resp.status_code == 200:
        # 如果返回成功,则返回内容
        return resp.text
    else:
        # 否则,打印错误状态码,并返回空
        print('返回状态码:', resp.status_code)
        return ''


# 写入文件
def writeIntoCSVFile(fileName):
    '''
    :param fileName:待保存csv文件路径
    :return: None
    '''
    # newline = ''解决csv写入内容自动换行的问题
    # 参考文献:https://blog.csdn.net/weixin_44064937/article/details/105745398
    f = open(fileName, 'w', newline='', encoding='utf-8')
    csv_writer = csv.writer(f)
    # 构建列表头
    csv_writer.writerow(['作者', '书名', '类型', '简介', '小说'])
    for i in range(len(booknamelist)):
        csv_writer.writerow(
            [str(authorlist[i]).strip(), str(booknamelist[i]).strip(), str(typelist[i]).strip(),
             str(contentlist[i]).strip(), str(novel[i])])#加上strip去除里面的空格
    f.close()


# 爬取600页数据一共9000条数据
for i in range(30, 100):

    # LoopUrl = 'https://movie.douban.com/top250?start=' + str(i * 25) + '&filter='  # 网页切换
    url = 'http://read.nlc.cn/yuewen/index?&pageNo=' + str(i) + '&categoryId=14500'#url里面的参数可以根据实际信息修改
    html = get_data(url=url)  # 获取数据
    root = etree.HTML(html)
    booknames = root.xpath('//li/a/span[@class="right"]/span[@class="tt"]/text()')  # 书名
    authors = root.xpath('//li/a/span[@class="right"]/span[@class="txt1"]/text()')  # 作者信息
    types = root.xpath('//li/a/span[@class="right"]/span[@class="txt1"]/i/text()')  # 类型
    contents = root.xpath('//li/a/span[@class="right"]/span[@class="txt2"]/text()')  # 简介
    for bookname in booknames:
        str(bookname).strip()
        booknamelist.append(bookname)
        # print(bookname)
    for author in authors:
        str(author).strip()
        if author != '\r\n\t\t\t\t\t\t\t\t\t':  # 因为打印出来的里面有很多空格所以吧不是空格的代替掉
            authorlist.append(author)
        # print(author)
    for type in types:
        str(type).strip()
        typelist.append(type)
        # print(type)
    for content in contents:
        novel.append("传记")#根据不同的类型进行修改
        str(content).strip()
        contentlist.append(content)
        # print(content)
    print("第", i, "页爬取完成")
    # print("bookname:list:", booknamelist)
    # print("authorlist:", authorlist)
    writeIntoCSVFile(fileName='data/cultural2.txt')
    # print(html + "555555555555555555555")

print('done')

 

标签:span,python,爬取,str,strip,print,import,class,图书
From: https://www.cnblogs.com/222wan/p/18253117

相关文章

  • Python统计实战:一题巩固单因子方差分析
    为了解决特定问题而进行的学习是提高效率的最佳途径。这种方法能够使我们专注于最相关的知识和技能,从而更快地掌握解决问题所需的能力。(以下练习题来源于《统计学—基于Python》。联系获取完整数据和Python源代码文件。)练习题一家管理咨询公司为不同的客户提供人力资源管理......
  • Python 中的 Pandas(数据分析与处理)
    Pandas是Python中最受欢迎的数据处理库之一,其名字源自于“PanelData”(面板数据)的缩写。它提供了三种主要的数据结构:Series, DataFrame,Panel(在新版本已经被弃用)    数据操作与基本技巧数据读取与加载:Pandas支持从多种数据源加载数据,包括CSV文件、Excel文件、S......
  • 一行Python代码可以做什么,超出你想象
    哈喽,大家好,我是木头左!揭秘编程语言的灵活性在编程的世界里,简洁就是力量。Python以其优雅和简洁而著称,让开发者能够用更少的代码做更多的事。但这并不意味着功能上的妥协——Python的强大之处在于它允许在一行代码中执行多个语句,这不仅能提高的编码效率,还能使代码更加紧凑和易......
  • 嗨翻-Python-第三版-早期发布--全-
    嗨翻Python第三版(早期发布)(全)原文:annas-archive.org/md5/417e7d9e18255015d2c5d146fdf36e20译者:飞龙协议:CCBY-NC-SA4.0序言安装最新的Python3你在这里所做的取决于你正在运行的平台,假定是其中之一的Windows、macOS或Linux。好消息是所有三个平台都支持最新的Pyt......
  • Python-与-Jax-现代推荐系统构建指南-全-
    Python与Jax现代推荐系统构建指南(全)原文:annas-archive.org/md5/da17d05291861831978609329c481581译者:飞龙协议:CCBY-NC-SA4.0前言你是如何找到这本书的?是在网站上看到广告吗?也许是朋友或导师建议的;或者你在社交媒体上看到了提到它的帖子。也许你是在书店的书架上发现......
  • Python-机器学习秘籍第二版-全-
    Python机器学习秘籍第二版(全)原文:annas-archive.org/md5/343c5e6c97737f77853e89eacb95df75译者:飞龙协议:CCBY-NC-SA4.0前言当本书的第一版于2018年出版时,填补了机器学习(ML)内容日益丰富的关键空白。通过提供经过充分测试的、实用的Python示例,使从业者能够轻松地复制和......
  • 【cv-python基础】不同数据集的解析
    前言数据集使用之前需要对标注文件进行解析,故此记录。代码实现1.APA数据集解析#20240612:parsejsonfiletolabeledimage.importargparseimportjsonimportosimportos.pathasospimportcv2ascvimportnumpyasnpjsonfilename="freespace_3Dbox_APA.j......
  • 2024华为OD机试真题-出租车计费 、靠谱的车-(C++/Python)-C卷D卷-100分
    2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++) 题目描述:程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大。出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能都正常。比如:23再多......
  • 2024华为OD机试真题-API集群负载统计-(C++/Python)-C卷D卷-100分
     2024华为OD机试题库-(C卷+D卷)-(JAVA、Python、C++)题目描述某个产品的RESTfulAPI集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。RESTfulAPI是......