爬取一个网页的信息
总结一下今天学到的内容
首先是requests库
requests是一个网络请求库,可以实现和浏览器一样的对HTTP的请求来获取网站信息
比如
import requests
url='https://maoyan.com/board/4'
#也可以传递params和headers
payload = {'key1': 'value1', 'key2': 'value2'}
headers = {'content-type': 'application/json'}
r=requests.get(url,params=payload,headers=headers)
print(r.text)
print(r.url)
#输出:http://httpbin.org/get?key2=value2&key1=value1
print(r.cookie)
然后就可以看到运行出的页面源代码了
当然,requests不止能get,还有
GET 请求获取URL位置的资源
HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息
POST 请求向URL位置的资源后附加新的数据
PUT 请求向URL位置储存一个资源,覆盖原URL位置的资源
PATCH 请求向局部更新URL位置的资源,即改变该处资源的部分欸容
DELETE 请求删除URL位置储存的资源
另外post传参主要是data参数,方法和get的params一样
其次是lxml
lxml是xml,html的解析库
看代码
from lxml import etree
def parse(text)
html=HTML.etree(text)
name = html.xpath('//div[@class="movie-item-info"]/p[@class="name"]/a/@title')
autor = html.xpath('//p[@class="star"]/text()')
print(name)
再然后是写入文件
以后读写文件都使用with open语句,不要再像以前那样用f = open()这种语句了
with open("文件.属性”,ensure_ascii=False) as f
False代表utf-8型,写入文件就可以f.write(***)
紧接上一个问题
f.write(data)中data的类型只能是str
import json
item=json.dumps(data)
json.dumps可以把dict型转换为str
json.load可以把str转换为dict
最后两个小知识点
zip拉链函数
name = html.xpath('//div[@class="movie-item-info"]/p[@class="name"]/a/@title')
autor = html.xpath('//p[@class="star"]/text()')
for name, autor in zip(name, autor):
print item['name'] = name
item['autor'] = autor