目标:
对xx网上的书籍信息进行提取并保存为txt格式, 标记为(排名,书名,图片地址,作者,推荐指数,五♥数量,价格)
步骤:
1、调用requests库,拿到所需要的网页源代码 状态码为200表示返回成功
2、对返回的网页源代码进行解析,使用正则表达式获取想要的关键信息(书名,排名,作者等等......),之后封装数据
3、获取1-25页的1000条书籍信息,使用for循环保存在txt文件里面
关键函数和正则表达式编写实现功能:
自定义函数:
1、parse_dandan(url)
2、parse_result(html)
3、write_item_to_file(item)
4、main(page)
pattern = re.compile('.*?list_num.*?(\d+)..*?
.*?class="star">.*?class="tuijian">(.*?).*?class="publisher_info">.*?target="_blank">(.*?).*?class="biaosheng">.*?(.*?).*?¥(.*?).*?
',re.S)代码实现:
'''
对当当网上的书籍信息进行提取
(排名,书名,图片地址,作者,推荐指数,五♥数量,价格)
'''''
import requests
import re
import json
'''
请求成功,拿到源代码
'''
def request_dandan(url):
try:
resp = requests.get(url)
if resp.status_code ==200:
return resp.text
except requests.requestException:
return None
'''
对其进行解析,使用正则表达式获取
想要的关键信息,之后封装数据
'''
def parse_result(html):
pattern = re.compile('.*?list_num.*?(\d+)..*?
.*?class="star">.*?class="tuijian">(.*?).*?class="publisher_info">.*?target="_blank">(.*?).*?class="biaosheng">.*?(.*?).*?¥(.*?).*?
',re.S)
items = re.findall(pattern,html)
for item in items:
yield {
'range': item[0],
'iamge': item[1],
'title': item[2],
'recommend': item[3],
'author': item[4],
'times': item[5],
'price': item[6]
}
'''
将获取的数据保存在book.txt里面
'''
def write_item_to_file(item):
print('开始写入数据 ====> ' + str(item))
with open('book.txt', 'a', encoding='UTF-8') as f:
f.write(json.dumps(item, ensure_ascii=False) + '
')
f.close()
'''
定义函数 使用page变量实现翻页功能,requests请求,返回
HTML进行正则解析
'''
def main(page):
url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-' + str(page)
html = request_dandan(url)
items = parse_result(html) # 解析过滤我们想要的信息
for item in items:
write_item_to_file(item)
'''
获取 1-25页的1000条数据 使用for循环
'''
if __name__ == "__main__":
for i in range(1,26):
main(i)
运行结果如下:
关注我,让我们一起学习python爬虫,加油
| 留言与评论(共有 0 条评论) “” |