第一个小爬虫

# 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

posted @ 2020-04-02 13:55  橙汁one  阅读(130)  评论(0编辑  收藏  举报