Python网络爬虫实战练习:爬取豆瓣图书信息

一、注意事项
1、文件名尽量使用英文,避免出现编码问题
2、含中文的文件写入,注意标注编码,如:

with open(r"C:\Users\10335\Desktop\response.txt", 'w', encoding = "utf-8") as f:
    f.write(html)
    f.close()

3、若长时间得不到输出,考虑正则表达式的构造是否捕捉效率不高

二、代码实现

import requests
import re
import time


class Book():# 书籍类
    def __init__(self, title="NULL", href="NULL", author="NULL", year="NULL", publisher="NULL", abstract="NULL"):
        self.title = title
        self.href = href
        self.author = author
        self.year = year
        self.publisher = publisher
        self.abstract = abstract

    def get_info(self):# 格式化输出至文件
        content = "Title:" + self.title + "   Author:" + self.author + "\nPublisher:" + self.publisher + " Year:" + self.year + "\nAbstract:\n" + self.abstract + "\nLink:" + self.href + "\n_________________________\n"
        with open(r"C:\Users\10335\Desktop\doubanbook.txt", 'a', encoding = "utf-8") as f:
            f.write(content)
            f.close()


header = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36"}
html = requests.get("https://book.douban.com/", headers=header).text
with open(r"C:\Users\10335\Desktop\response.txt", 'w', encoding = "utf-8") as f:#将响应保存为文件,以分析匹配效果
    f.write(html)
    f.close()
books = []
pattern = re.compile(
    '<div class="title">.*?href="(.*?)"\s*title="(.*?)".*?<div class="author">\s*(.*?)\s*?</div>\s.*?"year">\s*(.*?)\s.*?publisher">\s*(.*?)\s.*?abstract">\s*(.*?)\s</p>',
    re.S)
start = time.perf_counter()
results = pattern.findall(html)
end = time.perf_counter()
for result in results:
    books.append(Book(href=result[0], title=result[1], author=result[2], year=result[3],
                      publisher=result[4], abstract=result[5]))
for book in books:
    book.get_info()
print("Running time:", (end - start), "seconds")# 输出运行时间

三、部分输出截取:

Title:不管狗和茶炊怎么闹腾   Author:王这么
Publisher:人民文学出版社 Year:2020-1
Abstract:
⭐一本点亮平庸日常的生活之书
⭐讲述平淡中的光怪陆离和嘈杂中的诗意
⭐不管狗和茶炊怎么闹腾,生活就在那里
⭐努力地将日子过下去,就是我们的坎坷征途与星辰大海
——————————————————————————————————————
契诃夫说:“不管狗和茶炊怎么闹腾,夏天过后还会有冬天,青春过后还会有衰老,幸福后面跟着不幸,或者是相反。不管这多么...
               
Link:https://book.douban.com/subject/34954089/?icn=index-latestbook-subject
_________________________
Title:女生徒   Author:[]太宰治
Publisher:天津人民出版社 Year:2020-1
Abstract:
太宰治&#34;女性独白体“短篇小说集
野间文艺翻译奖得主 陆求实全新译本
——————————————————————————
本书选取太宰治作品中以女性第一人称视角叙述的10 篇作品,以其中的名篇《女生徒》为书名,并对照各个故事中女性的人生轨迹——少年、青年、壮年、老年追忆少年时光,对各篇顺序做出梳理。
——————————————————————————
...
               
Link:https://book.douban.com/subject/34924767/?icn=index-latestbook-subject
_________________________
Title:东京百景   Author:[] 又吉直树
Publisher:上海译文出版社 Year:2020-3
Abstract:
史上最畅销的芥川奖获奖者又吉直树的随笔集——写给东京的一封情书,但永远得不到它的回眸
豆瓣9.3分日剧《火花》的创作原点,又吉直树的另类个人传记
以东京为背景,直指正在大城市打拼的现代年轻人的生活和内心
在幻想与现实的交错之间,发现东京的残酷与温柔
“我期望,这个世界不要欺骗年轻人。别把他们当食物吞掉。”
内容简介:
《东京百景》由100篇小短文串联而成...
               
Link:https://book.douban.com/subject/34900487/?icn=index-latestbook-subject
_________________________
Title:好学校   Author:[] 理查德·耶茨
Publisher:上海译文出版社 Year:2020-2
Abstract:
美国寄宿男校的一段伤心往事 耶茨最温柔的一部小说
-
书名中的“好学校”是一所虚构的康涅狄格州预备中学。故事发生在上个世纪四十年代初期,“好学校”中的男孩毕业后就要立刻参军作战,老师们对于自身职业和所在学校的情感五味杂陈。尽管这是一所学校,可正如书中一名老师所说,这里“蕴藏了巨大的潜在能量”,学生如此,老师亦如此。从某种程度上,本书延续了《革命...
               
Link:https://book.douban.com/subject/34888772/?icn=index-latestbook-subject
_________________________
Title:周作人集外文   Author:周作人 著&nbsp;/&nbsp;陈子善, 赵国忠 编
Publisher:上海人民出版社 Year:2020-1
Abstract:
☆全新《周作人集外文》,搜集更为完备、考订更为准确
☆收入近年来新发现的周作人佚文,增补文章百余篇
☆填补研究资料之缺漏,展现更为丰富立体的周作人形象
·
新版《周作人集外文》共两卷,本书为上卷,收入1904年至1945年的集外文,包括散文、旧诗、新诗,以及为自己或他人的文章、译文所写的题记、附记、按语等未曾收入自编文集的作品。
相较于之前版本,新版《周...
               
Link:https://book.douban.com/subject/30212806/?icn=index-latestbook-subject
_________________________
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!对于爬取菜谱网站,你可以使用 Python 的 requests 和 BeautifulSoup 库来实现。首先,你需要发送请求获取网页的 HTML 内容,然后使用 BeautifulSoup 解析该内容,提取出你所需的菜谱信息。 以下是一个简单的示例代码,以爬取美食天下网站(www.meishij.net)为例: ```python import requests from bs4 import BeautifulSoup def get_recipe(url): response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') # 在这里根据网页结构提取菜谱信息 # 例如,获取菜名和食材 recipe_name = soup.find('h1', class_='recipe-title').text.strip() ingredients = soup.find('div', class_='particulars').ul.find_all('li') ingredient_list = [] for ingredient in ingredients: ingredient_list.append(ingredient.text.strip()) # 输出菜谱名称和食材列表 print("菜谱名称:", recipe_name) print("食材列表:", ingredient_list) # 菜谱详情页的URL recipe_url = 'https://www.meishij.net/1' get_recipe(recipe_url) ``` 对于爬取豆瓣 Top250 电影榜单,同样可以使用 requests 和 BeautifulSoup 库来实现。以下是一个简单的示例代码: ```python import requests from bs4 import BeautifulSoup def get_top250(): url = 'https://movie.douban.com/top250' response = requests.get(url) soup = BeautifulSoup(response.text, 'html.parser') movie_list = soup.find('ol', class_='grid_view').find_all('li') for movie in movie_list: # 获取电影排名、名称和评分 rank = movie.find('em').text title = movie.find('span', class_='title').text rating = movie.find('span', class_='rating_num').text # 输出电影信息 print("排名:", rank) print("名称:", title) print("评分:", rating) print() get_top250() ``` 以上代码只是一个简单示例,你可以根据具体的网页结构和需求进行相应的修改和扩展。希望能对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值