xpath爬取豆瓣网保存为txt上传到hive操作
python爬取豆瓣top250网站
https://movie.douban.com/top250
爬取
爬取了序号、名称、简介。
User-Agent查找
NetWork里边Doc有关user-agent和cookies等信息。
爬取过程
import requests
import pandas as pd
import os
import time
from lxml import etree
import re
def get_html(url):
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36'
}
r=requests.get(url,headers=headers)
r.raise_for_status()
r.ending="utf-8"
return r.text
def parse_page(html):
dom=etree.HTML(html)
rank=dom.xpath('//div[@class="pic"]/em/text()')
#print(rank)
name=dom.xpath('//div[@class="hd"]/a//span[1]/text()')
#print(name)
short=dom.xpath('//p[@class="quote"]/span/text()')
#print(short)
item=pd.DataFrame({
'id':rank,
'name':name,
'short':short
})
item.to_csv('test.txt',sep=',',index=False,header=None)
#print(item)
print("保存成功!")
if __name__=="__main__":
url='https://movie.douban.com/top250'
html=get_html(url)
parse_page(html)
print("爬取成功!")
这里只爬取了一页 如果爬取多页可以用for循环
爬取结果:
上传到虚拟机
用vm-tools过程忽略
然后启动Hadoop、hive
建表
#建表
create table test_db1(id int,name string,short string)row format delimited fields terminated by ',' stored as textfile;
#上传本地文件
load data local inpath '/usr/test/test.txt' into table test_db1;
#查看
select * from test_db1 limit 10;
完成!