第一个小爬虫
# requests 用来发送http请求 bs4 用来解析网页 chardet 用来检测网页编码格式
import json
import requests
from bs4 import BeautifulSoup
import chardet
from lxml import html
import xml
# 存储爬取信息的文本文件。a为追加模式,新增信息始终放在已有的信息后面,这样已有的内容就不会被覆盖
f = open("E:\info.txt", "a")
# 要爬取信息的url,找网址的时候很可能出现假网址,网址里边进行了二次请求。可以通过找请求头内容的方式找到实际的网址
url = "https://movie.douban.com/j/search_subjects?type=movie&tag=%E7%83%AD%E9%97%A8&page_limit=50&page_start=0"
# 伪装爬虫,请求头的内容可以在浏览器中获得(打开网页,点击键键盘上的F12,出现控制台,点击网络,再点击XHR)
header = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:74.0) Gecko/20100101 Firefox/74.0'
, 'Connection': 'keep-alive'
}
# 此处for循环没有作用,本来想爬取10个网页的数据,但是发现豆瓣网页直接将一个模块的数据打包为json,全部获得
for i in range(1):
# 用requests库的get方法与服务器进行连接,返回一个requests.models.Response的类
pageConnect = requests.get(url, headers=header)
print(type(pageConnect))
# 用chardet库中detect方法获取网页的编码格式,返回的是dict字典,具体的编码格式在encoding这个键对应的值中
pageConnect.encoding = chardet.detect(pageConnect.content)['encoding']
# 设置好编码格式后,用text方法把pageConnect转化为字符串供beautifulSoup处理,但是本次直接得到了json,
# 就不用再通过找便签来识别数据,所以解析网页的就注释了
page = pageConnect.text
print(type(page))
# 用beautifulSoup进行解析网页,lxml是解析类型
# soup=BeautifulSoup(page,'lxml')
# print(soup)
# 进行h5标签选择
# ppp=soup.select('p')
# json.dumps():将字典转为字符串类型
# json.loads():将字符串转成dict类型
json_page = json.loads(page)
print(json_page)
newpages = json_page['subjects']
print(newpages)
for x in range(len(newpages)):
newpage = newpages[x]
moviename = newpage['title']
print(moviename)
f.write(moviename+'\n')
参考文章:https://blog.csdn.net/guanmaoning/article/details/80158554

浙公网安备 33010602011771号