python 抢票代码 猫眼演出_python爬虫实例-猫眼电影

1.环境准备

python3.6

pycharm

安装requests库,pip install requests

2.XPath语法

XPath 是一门在 XML 文档中查找信息的语言。XPath 用于在 XML 文档中通过元素和属性进行导航。XML实例文档

Harry Potter

29.99

Learning XML

39.95

常用路径表达式

nodename 选取此节点的所有子节点

/ 从根节点选取

// 从匹配选择的当前节点选择文档中的节点,而不考虑他们的位置

. 选取当前节点

.. 选取当前节点的父节点

@ 选取属性实例

bookstore 选取bookstore元素的所有子节点

/bookstore 选取根元素bookstore

bookstore/book 选取属于bookstore的子元素的所有book元素

//book 选择所有book子元素,而不管它们在文档中的位置

bookstore//book 选取属于bookstore元素的后代的所有book元素,而不管它们位于

bookstore之下的什么位置

// @ lang 选取名为lang的所有属性

3.猫眼爬虫实例

import requests

import json

from lxml import etree

# 爬取一个网页

def getOne(n):

#模拟浏览器访问模式,防止拒绝访问

header = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}

r = requests.get(url, headers=header)

return r.text

#data = getOne(10)

#print(data)

def parse(text):

#初始化 标准化

html = etree.HTML(text)

#提取我们想要的信息,需要写xpath语法

#提取电影名 names xpath返回列表

names = html.xpath('//div[@class="movie-item-info"]/p[@class="name"]/a/@title')

#提取上映时间

releasetimes = html.xpath('//p[@class="releasetime"]/text()')

items = {}

for name,releasetime in zip(names,releasetimes):

items['name'] = name

items['releasetime'] = releasetime

#生成器,循环迭代,yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。

yield items

#保存数据

def save2File(data):

with open('movie.json','a',encoding='utf-8') as f:

#把字典和列表转化为字符串

data = json.dumps(data,ensure_ascii=False) + ',\n'

f.write(data)

def run():

for n in range(0,10):

text = getOne(n)

items = parse(text)

for item in items:

print(item)

save2File(item)

if __name__ == '__main__':

run()

扩展函数:zip(a,b)拉链函数,序列解包

a = [1,2,3,4,5]

b = ['a','b','c','d','e']

it = {}

for c,d in zip(a,b):

it['c'] = c

it['d'] = d

print(it)

JSON模块之dumps

json.dumps

将Python对象编码成字符串

import json

data = {'a':1,'b':2,'c':3,'d':4,'e':5}

jsonDumps = json.dumps(data)

jsonLoads = json.loads(jsonDumps)

print(jsonDumps,type(jsonDumps))

print(jsonLoads,type(jsonLoads))

输出:

{"a": 1, "b": 2, "c": 3, "d": 4, "e": 5}

{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

写入文件一

f = open()

f.write()

f.close()

写入文件二(自动关闭文件)

保存文件:

with open() as f:

f.write()

按行读取:

with open() as f:

for line in f:

print(line)

#do something

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值