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!')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python集合去重_python集合去重

[python中对list去重的多种方法 怎么快速的对列表进行去重呢,去重之后原来的顺序会不会改变呢? 1.以下的几种情况结果是一样的,去重之后顺序会改变: i [1,2,3,3,4,2,3,4,5,6,1] news_i [] for id in i: if id not in news_i: news_i.append(…

linux进程pid分配规则,Linux进程pid分配法【转】

一. 概述Android系统创建进程,最终的实现还是调用linux fork方法,对于linux系统每个进程都有唯一的 进程ID(值大于0),也有pid上限,默认为32768。 pid可重复利用,当进程被杀后会回收该pid,以供后续的进程pid…

sqlserver date类型和字符串比较_基于SQL Server数据库搭建主从复制实现读写分离实战演练...

一、课程介绍读写分离(主从同步)从字面意思就可以理解,就是把对数据库的读操作和写操作分离开。读写分离在网站发展初期可以一定程度上缓解读写并发时产生锁的问题,将读写压力分担到多台服务器上。读写分离的基本原理是让主数据库处理事务性增、改、删操…

linux非标准头文件,Linux学习:unix的标准化的实现(Linux中各种限制-数据类型-各种标准化头文件介绍)...

作为Linux的前身,unix标准化是十分重要的。我在这里挑几个重要的点说明。1:Linux中各种限制。Linux中限制有编译时限制和运行时限制,另外有一些限制是由于我们的实现不同而不同,因此我们需要调用对应的函数获取对应的值不同。(eg&…

python怎么导入大小字母_python遍历小写英文字母的方法

python遍历小写英文字母的方法在c、c等语言中,可以用字符1的for循环来遍历小写的26个英文字母,但是由于python语言的特殊性,通过a 1这种代码并不能成功遍历,以下是在python中遍历英文字母的简洁代码:import stringfor…

51单片机怎么显示当前时间_(进阶篇)51单片机之按键控制蜂鸣器、数码管、按键值移位显示...

一、实操演示- 按键控制蜂鸣器1、图文详细独立按键硬件电路蜂鸣器硬件电路2、连接方式:J20的第3号引脚连接到J7引脚,即P15连接J7。J29的第7、8号引脚连接到JP1的第1、2号引脚,即P31连接k1,P30连接k2。下载程序后,观察现…

linux怎么运行g77,Linux安装g77编译器的技巧

在Ubuntu10.10系统中,g77已经被gfortran完全替代了,但并不能完全兼容过去的g77,这样就不能使用一些用977编译的程序了。所以我们只能自己再安装g77了。今天华军小编给大家展示的是Linux安装g77编译器的技巧,精心挑选的内容希望大家…

oracle 结果集已耗尽_java.sql.SQLException: 结果集已耗尽

编写了jsp谁能帮忙看下有什么问题编写了jsp 谁能帮忙看下 有什么问题技术交流ResultSet rsnull;String str"select publish_id,publish_name,publish_time,publish_text from comment_tb order by publish_time desc ";query.connect();rsquery.select(str);while(rs…

vs使用未初始化的内存怎么解决_遇到C语言内存错误怎么办?一定要找准这六个原因...

一、没有为指针分配内存定义了指针变量,但是没有为指针分配内存,即指针没有指向一块合法的内存。浅显的例子就不举了,这里举几个比较隐蔽的例子。1、结构体成员指针未初始化struct student { char *name; int score; }stu,*pstu; int main() …

linux服务器如何设置双网卡,linux服务器设置(双网卡共享上网)

一、网络拓补结构:服务器:两网卡的设置:eth0:202.96.168.100 掩码:255.255.255.0 网关:202.96.168.68 #与 Inte.Net 相联eth1:192.168.1.1掩码:255.255.255.0#与局域网相联客户机子网段:192.1…

pwn环境搭建_pwndbg、pwntools环境搭建(Unix系统)

目录[TOC]pwndbg环境搭建项目地址https://github.com/pwndbg/pwndbg搭建过程1、安装环境基础gitpythonpython-pip2、安装过程使用git命令克隆远程项目到本地。git clone https://github.com/pwndbg/pwndbg进入项目根目录并执行一键安装脚本cd pwndbg && ./setup.sh该脚…

cad求和插件_黑科技 | 无BIM建模下平面CAD自动生成门窗表

如果你接到的施工图既不是用天正出的,也不是用revit出的,还得统计门窗表,那么你需要读完这篇文章。为了能够让自己和所有底层同行们从这项无脑又烧脑的机械劳动中解脱,C君近期利用茶余饭后的时间开发了一个小插件,可以…

linux数据库实例开机启动,linux下数据库实例开机自启动设置

linux下数据库实例开机自启动设置 1、修改/oratab [rootorg54 ~]# vi/etc/oratab --把N改为Y,如下提示 # This file is used by ORACLEutilities. It is created by root.sh # and updated by the Database ConfigurationAssistant when creating # a datablinux下数…

panic 苹果aop_Go Web开发之Revel - 拦截器

一个拦截器是一个框架在调用action方法前或后调用的函数. 它允许一种AOP的形式, 它经常被用于做下面几种事情:Request loggingError handlingStats keeping在Revel里, 一个拦截器能接受两种形式:1. 函数拦截器: 一个函数满足没有访问特定的应用程序Controller被调用在应用程序中…

make找不到linux内核函数,linux内核make menuconfig出错

今天实验刚从服务器上迁移过来的维护的linux 9260的内核,使用make menuconfig时出错,报错为:yongtaoyongtao-desktop:~/public/linux_release/linux-2.6.24$ make menuconfigHOSTCC scripts/kconfig/conf.oHOSTCC scripts/kconfig/kxgettex…

tensorboard ckpt pb 模型的输出节点_算法工程化系列——模型固化

摘要基于tensorflow训练的模型一般被保存为ckpt形式的文件,随着当前深度学习模型网络越来越大,对应模型也会非常大。当对外提供服务的时候,如果采用ckpt的形式,服务进程被调起来非常困难,且推理服务一般速度也较慢(会达…

深度linux内核升级,深度操作系统 2020.11.11 更新发布:内核升级

原标题:深度操作系统 2020.11.11 更新发布:内核升级IT之家11月11日消息 今日,深度操作系统宣布2020.11.11 更新现已发布。本次更新包括升级内核、Debian 10.6 仓库以及系统安全性更新。系统安全方面,本次更新修复了 Firefox-ESR 安…

unity 使用mysql实现登录注册_用mysql实现登录注册功能

1、创建用户表表结构如下idunameupwdisdelete注意:需要对密码进行加密。如果使用md5加密,则密码包含32个字符。如果使用sha1加密,则密码包含40个字符,这里使用这种方式。md5加密方式:import hashlibpwd 123456my_md5 …

python爬电影_使用Python多线程爬虫爬取电影天堂资源

最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载。刚开始学习python希望可以获得宝贵的意见。 先来简单介绍一下,网络爬虫的基本实…

打不开磁盘配额linux,九度OJ 1455 珍惜现在,感恩生活 -- 动态规划(背包问题)...

题目描述:为了挽救灾区同胞的生命,心系灾区同胞的你准备自己采购一些粮食支援灾区,现在假设你一共有资金n元,而市场有m种大米,每种大米都是袋装产品,其价格不等,并且只能整袋购买。请问&#xf…