python获取网页数据对电脑性能_【Python】网页数据爬取实战
由于网页结构跟之前有变化,还不是很熟悉。代码待完善,问题记录:
腾讯新闻二级网页内容爬取有问题。
链家网站头文件没有用到。
爬取一条腾讯视频的header内容,存入txt。要求:
包含网页链接
包含title
包含所有headers信息
import requests
from bs4 import BeautifulSoup
u = 'http://news.qq.com/a/20170205/023923.htm'
r = requests.get(url = u)
headers = r.headers #获取网页头部信息
#print(headers)
soup = BeautifulSoup(r.text,'lxml')
title = soup.title.text #获取网页title内容
#print(title)
f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\header.txt','w',encoding='utf8')
f.seek(0)
# 创建一个txt文件
f.write('爬取网页:'+str(u)+'\n')
f.write('新闻标题为:'+title+'\n')
for i in headers:
lst = [i,':',headers[i],'\n']
f.writelines(lst)
f.close()
print('finished!')
爬取腾讯新闻网站上,某一天的某类新闻标题。要求:
开头:‘XX年XX月XX日腾讯新闻’
包括新闻标题和网址
(爬取每一条新闻的内容(二级标题))
import requests
from bs4 import BeautifulSoup
import re
u = 'http://news.qq.com/world_index.shtml'
r = requests.get(url = u)
soup = BeautifulSoup(r.text,'lxml')
f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\news.txt','w',encoding='utf8')
f.seek(0)
# 创建一个txt文件
f.write('2018年8月26日腾讯新闻\n')
news = soup.find_all('a',href=re.compile('http://news.qq.com/a/20180825/'))
#print(news)
for i in news:
#print(i)
txt = i.text.strip()#strip() 用于去掉前后空格
if txt =='':
continue
else:
lst = [txt,',','url=',i.attrs['href']]
f.writelines(lst)
f.close()
print('finished!')
修改
import requests
from bs4 import BeautifulSoup
import re
u = 'http://news.qq.com/world_index.shtml'
r = requests.get(url = u)
soup = BeautifulSoup(r.text,'lxml')
f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\news.txt','w',encoding='utf8')
f.seek(0)
# 创建一个txt文件
f.write('2018年8月26日腾讯新闻\n')
news = soup.find_all('a',href=re.compile('//new.qq.com/omn/20180826'))
#print(news)
for i in news:
#print(i)
txt = i.text.strip()#strip() 用于去掉前后空格
if txt =='':
continue
else:
lst = [txt,',','url=','http:',i.attrs['href'],'\n']
f.writelines(lst)
f.close()
print('finished!')
添加正文内容:
import requests
from bs4 import BeautifulSoup
import re
u = 'http://news.qq.com/world_index.shtml'
r = requests.get(url = u)
soup = BeautifulSoup(r.text,'lxml')
f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\news2.txt','w',encoding='utf8')
f.seek(0)
# 创建一个txt文件
f.write('2018年8月26日腾讯新闻\n')
news = soup.find_all('a',href=re.compile('http://news.qq.com/a/2018'))
#print(news)
for i in news:
#print(i)
txt = i.text.strip()#strip() 用于去掉前后空格
if txt =='':
continue
else:
ul = i.attrs['href']
ur = requests.get(url = ul)
usoup = BeautifulSoup(ur.text,'lxml')
f.write(txt+'\n')
#打印正文
f.write('正文如下:\n')
if usoup.body.attrs[id]=='P-QQ':#排除图片新闻
continue
else:
p = usoup.find('div',id="Cnt-Main-Article-QQ").find_all('p')
for i in p:
print(i.text)
f.write(i.text+'\n')
f.write('\n')
f.close()
print('finished!')
爬虫正确的习惯和逻辑
函数式爬取
用浏览器去访问,headers信息
r = request.get(url='...',headers={...})以浏览器的形式向网页进行请求
头部信息
headers = input("粘贴头部信息:")
lst = headers.split('\n')
m=[]
for i in lst:
key = i.split(':')[0]
value = i.split(':')[1]
m.append([str(key),str(value)])
print(dict(m))
def header_format(h):
"""
函数用于转译网页headers信息
h:输入的headers信息
"""
h = input("粘贴头部信息:")
lst = h.split('\n')
m=[]
for i in lst:
key = i.split(':')[0]
value = i.split(':')[1]
m.append([str(key),str(value)])
return(dict(m))
print(header_format(headers))
用函数式写法的优点:
阅读性更强
函数的可复制性
便于修改
爬取一条腾讯视频的header内容,存入txt。函数式编写:
包含网页链接
包含title
包含所有headers信息
爬取链家二手房数据-深圳
import requests
from bs4 import BeautifulSoup
import re
def url_analysis(u, h, s, n):
'''
用于分析网页,最后得到一个含有二级网址的标签列表
u:起始网址
h:头部信息
s:二级网址包含特定字段
n:页码
'''
url_lst=[]
for i in range(1,n+1):
if i == 1:
r = requests.get(url=u+'nb1rs深圳/')
else:
r = requests.get(url=u+'pg'+str(i)+'nb1rs深圳/')
soup = BeautifulSoup(r.text,'lxml')
r2 = soup.find_all('a',href=re.compile(s))
for j in r2:
r3 = j.attrs['href']
url_lst.append(r3)
return(url_lst)
def content(u,h):
'''
爬取网页标签信息
u:爬取的二级网址
h:头部信息
'''
r = requests.get(url=u)
r.encodinge = 'utf-8'
soup = BeautifulSoup(r.text,'lxml')
t = soup.title.text #爬取标题
toprice = soup.find('div',class_='price').find('span',class_='total').text
unprice = soup.find('div',class_='unitPrice').find('span',class_='unitPriceValue').text
area = soup.find('div',class_='area').find('div',class_='mainInfo').text
base = soup.find('div',class_='base').find('div',class_='content').find_all('li')
year = base[-1].text
pattern = 'resblockPosition:\'(.*?)\',' #.*?任意字符
position =re.search(pattern,r.text).group(1)
lng = position.split(',')[0]
lat = position.split(',')[1]
return([t,',', toprice,',', unprice,',', area,',', year,',',lng,',',lat,'\n'])
if __name__ == '__main__': #main函数
web_u = 'https://sz.lianjia.com/ershoufang/'
web_h = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Cookie': 'TY_SESSION_ID=93f5b43a-5dc9-4d96-b57a-a4eb78f8dc15; lianjia_uuid=614ed9e0-dc25-421f-ba8b-141c574dbb47; _smt_uid=5b80defd.8430805; UM_distinctid=1656f670d3e4ff-02814a7ed21053-b34356b-1fa400-1656f670d3fdd7; _jzqx=1.1535172349.1535172349.1.jzqsr=bj%2Elianjia%2Ecom|jzqct=/.-; _ga=GA1.2.50227061.1535172352; ljref=pc_sem_baidu_ppzq_x; lianjia_ssid=dbe87b29-353a-45c2-97cf-aae666e2771b; Hm_lvt_9152f8221cb6243a53c83b956842be8a=1535172349,1535201139,1535358484; _jzqa=1.3976151446564617700.1535172349.1535201139.1535358484.3; _jzqc=1; _jzqy=1.1535201139.1535358484.1.jzqsr=baidu|jzqct=%E9%93%BE%E5%AE%B6%E7%BD%91.-; _jzqckmp=1; _gid=GA1.2.1182771159.1535358486; select_city=440300; all-lj=c32edd623b8a5a59c7de54c92107bb6c; _qzjc=1; CNZZDATA1255849469=275538323-1535355329-%7C1535355329; CNZZDATA1254525948=1806440598-1535354494-%7C1535354494; CNZZDATA1255633284=72361912-1535358081-%7C1535358081; CNZZDATA1255604082=1229464985-1535356409-%7C1535356409; Hm_lpvt_9152f8221cb6243a53c83b956842be8a=1535359605; _qzja=1.1736056849.1535358739249.1535358739249.1535358739249.1535359600160.1535359605575.0.0.0.10.1; _qzjb=1.1535358739249.10.0.0.0; _qzjto=10.1.0; _jzqb=1.15.10.1535358484.1',
'Host': 'sz.lianjia.com',
'Referer': 'https',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
}
web_s = 'https://sz.lianjia.com/ershoufang/105'
web_n = 3
f = open('C:\\Users\\Administrator\\Desktop\\lianxi\\lianjia.txt','w')
f.seek(0)
f.write('title,total_price万元,unprice元/平方米,area平方米,产权年限,lng,lat\n')
for i in url_analysis(web_u, web_h, web_s, web_n):
data = content(i,web_h)
f.writelines(data)
print(data)
f.close()
print('finished!')
python获取网页数据对电脑性能_【Python】网页数据爬取实战相关推荐
- python从网上获取数据失败怎么解决_求助:scrapy爬取数据失败,反复调试都不成功...
目标:爬取某一学习网站上课程信息,前期调试仅获取课程名称 爬虫文件: import scrapy from xtzx.items import XtzxItem from scrapy.http im ...
- python豆瓣电影top250爬虫课程设计_[教程]图文:爬虫爬取豆瓣电影top250
window环境下 使用python脚本爬取豆瓣 环境安装 python python开发环境 jupyter python web IDE requests python requests模块用于向 ...
- python获取今日头条搜索信息_python爬虫(十二、爬取今日头条关键词所有文章)
今日头条 我们以搜索'妹子'为例 那 么 我 们 在 右 上 角 的 搜 索 框 搜 索 妹 子 , 出 来 了 一 系 列 文 章 那么我们在右上角的搜索框搜索妹子,出来了一系列文章那么我们在右上角 ...
- java获取b站动态列表地址_爬虫入门(三)爬取b站搜索页视频分析(动态页面,DBUtils存储)...
这一次终于到了分析b站视频了.开始体会到写博客非常占用学技术的时间,但是还是希望能总结,沉淀下来. 工具:使用Webmaigc框架,DBUtils,C3P0连接池. 分析过程:b站的搜索页面是这样的. ...
- 怎么用python读取csv文件、并且是读取行-使用python获取csv文本的某行或某列数据的实例...
站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存 ...
- python csv读取-使用python获取csv文本的某行或某列数据的实例
站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存 ...
- Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理
Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录
- python语言语块句的标记_《自然语言处理理论与实战》
编辑推荐 1.讲解自然语言处理的理论 2.案例丰富,实战性强 3.适合自然语言处理学习的入门者 内容提要 自然语言处理是什么?谁需要学习自然语言处理?自然语言处理在哪些地方应用?相关问题一直困扰着不少 ...
- python爬虫携程酒店_携程酒店爬取分享
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import urllib.request from bs4 import BeautifulSoup import csv import re def ...
最新文章
- 设置DateChooser控件的头部文字对齐方式.
- K8S 基本架构与常用术语
- 工作192:vue项目如何刷新当前页面
- BrainFuck——C实现BrainFuck解释器
- python 物理学中的应用_大学物理中Python的应用
- Android系统兼容性问题(持续更新)
- 9277用计算机,【资料】[转]鸿合电子白板学科通用工具使用技巧
- poj3660 Cow Contest
- redhad6.4 配置在线yum源
- opencv 视频处理相关
- vue项目实现富文本编辑器(实践用过)
- ZYNQ PL 添加IP 串口UART AXI UART16550
- vue 挑战最强大脑 记忆力5分 观察力5分 推理力4分
- 【RDMA】使用‘无信号完成’(Working with Unsignaled completions)|IBV_SEND_SIGNALED
- python爬虫练习5:博客阅读量助手
- 计算机毕业设计php+vue基于微信小程序的音乐云系统-音乐播放系统
- netbeans8 EBJ模块中JPA部署问题
- 安卓虚拟机_安卓虚拟机雷电模拟器
- 马士兵python_马士兵python大数据全栈工程师
- mysql wal_MySQL · 引擎特性 · Innodb WAL物理格式
热门文章
- flowable流程实例笔记(1)
- Linux环境安装并配置Maven
- java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法
- Python bytes 函数 - Python零基础入门教程
- Python str / bytes / unicode 区别详解 - Python零基础入门教程
- mysql的存储过程放在哪里_mysql存储过程求解,错误在哪里?
- java什么叫元素_什么是Java做什么 - 每个元素使它们成为对象类型?
- mysql存儲過程_Mysql存儲過程 | 學步園
- python linux log,linux,python 常用的处理log的命令
- docker kafka互通有问题_Docker搭建kafka集群