小白之python开发:网站信息爬虫lxml

今天初学了使用lxml爬取网站信息,首先遇到的问题就是在cmd中install lxml一直报错,升级到最新版本还是下载不了,后来就去查询网络上的一些其他解决方法,发现很多人都是自己去网站:https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 里下载适合自己的python版本的lxml。
结果发现里面列出的lxml根本没有对应我的python3.8版本(由于本人刚开始使用时下载的python2.7,后来发现种种问题,就去下载了最新版本的python)结果就尴尬了,先尝试着下载3.7版本的lxml,然后本地安装时报出了安装版本错误的提示,此时发现必须要抛弃python3.8了,于是果断回官网下载了3.7版本,emmm,然后在一段时间的等待后才成功下载,然后又是一段流水线的配置以及安装,然后才开始正是编程:
1.首先是导入包

import requests
from lxml import etree
#这里创建了一个全局变量用来后面显示信息的数量
index = 1

2.然后开始请求网站,由于网站会有很多反爬虫机制,所以为了使我们能够正确的访问到网站中信息,于是在此处需要把我们的访问伪装成浏览器,只要在要访问的网页中点击F12,打开network然后重新载入网页一次,在network中的name项中随便找一项然后便可以在Header中找到user-agent,获取该编码便可以完成伪装,实现访问,然后可以再加一个判断是否访问成功,同理也是判断status_code是否返回200,如果返回3或者4开头的数字则说明访问失败

def get_requests(url):
    #伪装成浏览器去访问
    headers ={"user-Agent":"此处为网页中查找到的编码"}
    html=requests.get(url,headers=headers)
    #判断对比服务器的状态码
    if html.status_code == 200:
        return html.text
    else:
        return None

3.使用lxml获取网页的信息以及解析,首先加载数据解析使用lxml中的etree来解析网页信息,然后在使用xpath解析需要的数据项名称,此时需要打开网页源码然后找寻相应的具体需要爬的标签名

def get_content_page(text):
    #加载解析数据
    html=etree.HTML(text)
    #解析数据名称
    name=html.xpath('//p[@class="name"]//text()')
    star=html.xpath('//p[@class="star"]//text()')
    time=html.xpath('//p[@class="releasetime"]//text()')

4.保存解析下的数据,此处使用全局变量index来统计爬虫爬取下来的数据量,打开新的TXT文件,然后将爬取下来的数据写入该文档。

 global index
    with open("电影口碑榜前十.txt",'a+',encoding='utf_8')as file:
        for item in range(10):
            file.write("排名第%s的"%index+
                       "电影名称:\t"+name[item].strip()+
                       "\t"+star[item].strip()+
                       "\t"+time[item].strip()+"\n"
                       )
            print("排名第%s的"%index+
                       "电影名称:\t"+name[item].strip()+
                       "\t"+star[item].strip()+
                       "\t"+time[item].strip()+"\n"
                       )
            index+=1

5.程序入口(写法有问题),此处遇到问题,原本的写法一直报错,后来删掉第一行才运行起来
删掉的第一行:

if _nam_ == '_maim_':

删除后的代码:

with open("电影口碑榜前十.txt",'w',encoding='utf_8')as file:
          file.write("今日猫眼电影网中的前十电影资讯:"+"\n")
    #请求网址
url="https://maoyan.com/board"
html = get_requests(url)
get_content_page(html)
上一篇:#1 爬虫:豆瓣图书TOP250 「requests、BeautifulSoup」


下一篇:01、IP地址、端口号、TCP协议