初识爬虫,了解简单的概念后,先做一点小的项目,打几行代码,感受一下,才方便继续学习。
在pycharm上运行需要的函数库:
简单地来说:
lxml–其中的HTML可解析网页
pip(似乎需要最新版本)
requests–申请访问
直接上代码(每一个必要位置均有注释):
(xpath最后会提到)
import requests
url = 'http://movie.douban.com/top250'
#伪装身份--headers--dic
headers = {
'user-agent':'mozilla/5.0'} #伪装成浏览器
resp = requests.get(url,headers=headers)
a = resp.status_code
print(a)
#请求成功--a==200
html = resp.text #输出更加美观(尽管是看不懂)
#print(html)
#网页内容解析
from lxml import etree
from parsel import selector #这个是另一个与xpath有类似功能的库
parse_html = etree.HTML(html) #解析网页 下面的text()务必写成函数形式
one = parse_html.xpath('//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]/text()') #以文本格式输出UTF-8,否则为element
print(one)
#在开发者模式下仔细观察会发现:每个电影的代码只有细微的差别
#//*[@id="content"]/div/div[1]/ol/li[1]/div/div[2]/div[1]/a/span[1]
#//*[@id="content"]/div/div[1]/ol/li[2]/div/div[2]/div[1]/a/span[1]
#去掉不一致的代码([n])会打出所有的电影(该页面的所有)
all = parse_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[1]/a/span[1]/text()')
print(all)
#获取评分
score = parse_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/div/span[2]/text()')
print(score)
x = parse_html.xpath('//*[@id="content"]/div/div[1]/ol/li/div/div[2]/div[2]/p[2]/span/text()')
print(x)
#小提示:如果使用pycharm,则注意选择运行结果栏左边的自动换行,更美观。(滚轮难受得一批)
然后点击上面栏的最左边一个按钮:
最后点击你需要的内容,代码会自动跟随,复制/span的xpath即可: