一、使用python下载网页代码
from requests_html
import HTMLSession
session =
HTMLSession()
r = session.get(
'https://movie.douban.com/subject/1292052/')
print(r.text)
二、提取网页中所需的内容
2.1使用使用CSS 选择器 来提取网页中有价值的信息--例:爬取单个豆瓣网页
先查看一段内容的代码,在代码上点击右键,选择 Copy -> Copy Selector (或者 Copy CSS Selector、复制 CSS 选择器),就能将这段内容对应的 CSS 选择器复制到剪贴板。
from requests_html
import HTMLSession
session=
HTMLSession()
r=session.get(
'https://movie.douban.com/subject/1292052/')
title=r.html.find(
'#content > h1 > span:nth-child(1)',first=
True)
# r.html.find() 接受一个 CSS 选择器(字符串形式)作为参数
# 返回在网页中使用该选择器选中的内容。
print(title.text)
2.2 例:爬取多个豆瓣网页
1 '''
2 爬取多个豆瓣网页
3 '''
4 from requests_html
import HTMLSession
5
6 links=[
'https://movie.douban.com/subject/1292052/',
7 'https://movie.douban.com/subject/1962665/',
8 'https://movie.douban.com/subject/26752088/'
9 ]
10
11 session=
HTMLSession()
12 for link
in links:
13 r=
session.get(link)
14 #r.html.render()
15
16 title=r.html.find(
'#content > h1 > span:nth-child(1)',first=
True)
17 year=r.html.find(
'#content > h1 > span.year',first=
True)
18 print(title.text,year.text)
2.3 例:爬取新浪财经股票的实时价格 多个
'''
例:爬取新浪财经股票的实时价格 多个
'''
from requests_html
import HTMLSession
links=[
'http://stock.finance.sina.com.cn/usstock/quotes/aapl.html',
'http://stock.finance.sina.com.cn/usstock/quotes/bidu.html',
'http://stock.finance.sina.com.cn/usstock/quotes/msft.html'
]
session=
HTMLSession()
for link
in links:
r=
session.get(link)
r.html.render()
title=r.html.find(
'#hqPrice',first=
True)
print(title.text)
三、存储格式化数据
CSV格式
Python 提供了标准库 csv 来读写 csv 数据。
import csv
file=open(
'movies.csv',
'w',newline=
'')
csvwriter=
csv.writer(file)
csvwriter.writerow(['名称',
'年份'])
csvwriter.writerow(['A',
'1992'])
csvwriter.writerow(['B',
'1998'])
csvwriter.writerow(['C',
'2010'])
file.close()
CSV格式:通常用来存储简单的数据,表格类型数据首选。并且可以使用Excel打开。
名称,年份
A,1992
B,1998
C,2010
JSON格式:通常用来存储键值数据,一般情况下选择
[{
"名称":
"A",
"年份":
"1992"},{
"名称":
"B",
"年份":
"1998"},{
"名称":
"C",
"年份":
"2010"}]
XML格式:存储非常复杂的数据格式,大多数情况下用不到。
<0><名称>A<!--名称--><年份>1992<!--年份--><!--0--><1><名称>B<!--名称--><年份>1998<!--年份--><!--1--><2><名称>C<!--名称--><年份>2010<!--年份--><!--2-->
将爬虫数据写入CSV文件
from requests_html
import HTMLSession
import csv
session=
HTMLSession()
file=open(
'movies.csv',
'w',newline=
'')
csvwriter=
csv.writer(file)
csvwriter.writerow(['名称',
'年份'])
links=[
'https://movie.douban.com/subject/1292052/',
'https://movie.douban.com/subject/26752088/',
'https://movie.douban.com/subject/1962665/']
for link
in links:
r=
session.get(link)
title=r.html.find(
'#content > h1 > span:nth-child(1)',first=
True)
year=r.html.find(
'#content > h1 > span.year',first=
True)
csvwriter.writerow([title.text,year.text])
file.close()
四、例子
简单地爬取百度新闻,并写入csv文件
from requests_html
import HTMLSession
import csv
session=
HTMLSession()
file=open(
'news_baidu.csv',
'w',newline=
'')
csvwriter=
csv.writer(file)
csvwriter.writerow(['序号',
'新闻标题'])
n=1
ans_new_titles=
[]
r=session.get(
'https://news.baidu.com/')
#r.html.render()
title_1=r.html.find(
'#pane-news > div > ul > li.hdline0 > strong > a',first=
True)
csvwriter.writerow([n,title_1.text])
n=n+1
titles_baidu=r.html.find(
'#pane-news > ul:nth-child(n) > li.bold-item > a')
ans_new_titles+=
titles_baidu
for title
in ans_new_titles:
csvwriter.writerow([n,title.text])
n+=1
file.close()
位置:爬虫\\create_file1
爬取学习强国,失败,代码如下:
from requests_html
import HTMLSession
import csv
session=
HTMLSession()
file=open(
'news_xxqg.csv',
'w',newline=
'')
csvwriter=
csv.writer(file)
csvwriter.writerow(['序号',
'新闻标题'])
n=1
ans_new_titles=
[]
r=session.get(
'https://www.xuexi.cn/')
r.html.render()
titles_xxqg=r.html.find(
'#Ckhjp4r149s000',first=
True)
ans_new_titles+=
titles_xxqg
for title
in ans_new_titles:
csvwriter.writerow([n,title.text])
n+=1
file.close()
五、简单搜索引擎
对存入的文件进行读取
import csv
page_url=
[]
page_title=
[]
file=open(
'全站爬虫爬取百度ai.csv',
'r')
infos=
csv.reader(file)
for info
in infos:
page_title.append(info[0])
page_url.append(info[1
])
while True:
keyword=input(
'请输入查询关键字,输入quit结束')
if keyword==
'quit':
break
for i
in range(len(page_title)):
if str(page_title[i]).find(keyword)>=
0:
print(page_url[i],page_title[i])
file.close()
转载于:https://www.cnblogs.com/start20180703/p/10362070.html
相关资源:一个简单的爬虫例子