由于网页结构跟之前有变化,还不是很熟悉。代码待完善,问题记录:

腾讯新闻二级网页内容爬取有问题。

链家网站头文件没有用到。

爬取一条腾讯视频的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】网页数据爬取实战相关推荐

  1. python从网上获取数据失败怎么解决_求助:scrapy爬取数据失败,反复调试都不成功...

    目标:爬取某一学习网站上课程信息,前期调试仅获取课程名称 爬虫文件: import scrapy from xtzx.items import XtzxItem from scrapy.http im ...

  2. python豆瓣电影top250爬虫课程设计_[教程]图文:爬虫爬取豆瓣电影top250

    window环境下 使用python脚本爬取豆瓣 环境安装 python python开发环境 jupyter python web IDE requests python requests模块用于向 ...

  3. python获取今日头条搜索信息_python爬虫(十二、爬取今日头条关键词所有文章)

    今日头条 我们以搜索'妹子'为例 那 么 我 们 在 右 上 角 的 搜 索 框 搜 索 妹 子 , 出 来 了 一 系 列 文 章 那么我们在右上角的搜索框搜索妹子,出来了一系列文章那么我们在右上角 ...

  4. java获取b站动态列表地址_爬虫入门(三)爬取b站搜索页视频分析(动态页面,DBUtils存储)...

    这一次终于到了分析b站视频了.开始体会到写博客非常占用学技术的时间,但是还是希望能总结,沉淀下来. 工具:使用Webmaigc框架,DBUtils,C3P0连接池. 分析过程:b站的搜索页面是这样的. ...

  5. 怎么用python读取csv文件、并且是读取行-使用python获取csv文本的某行或某列数据的实例...

    站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存 ...

  6. python csv读取-使用python获取csv文本的某行或某列数据的实例

    站长用Python写了一个可以提取csv任一列的代码,欢迎使用.Github链接 csv是Comma-Separated Values的缩写,是用文本文件形式储存的表格数据,比如如下的表格: 就可以存 ...

  7. Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频、图片、获取网页源码等)整理

    Python 爬虫 之 爬虫的一些基本知识和基本操作(爬取视频.图片.获取网页源码等)整理 目录

  8. python语言语块句的标记_《自然语言处理理论与实战》

    编辑推荐 1.讲解自然语言处理的理论 2.案例丰富,实战性强 3.适合自然语言处理学习的入门者 内容提要 自然语言处理是什么?谁需要学习自然语言处理?自然语言处理在哪些地方应用?相关问题一直困扰着不少 ...

  9. python爬虫携程酒店_携程酒店爬取分享

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 import urllib.request from bs4 import BeautifulSoup import csv import re def ...

最新文章

  1. 设置DateChooser控件的头部文字对齐方式.
  2. K8S 基本架构与常用术语
  3. 工作192:vue项目如何刷新当前页面
  4. BrainFuck——C实现BrainFuck解释器
  5. python 物理学中的应用_大学物理中Python的应用
  6. Android系统兼容性问题(持续更新)
  7. 9277用计算机,【资料】[转]鸿合电子白板学科通用工具使用技巧
  8. poj3660 Cow Contest
  9. redhad6.4 配置在线yum源
  10. opencv 视频处理相关
  11. vue项目实现富文本编辑器(实践用过)
  12. ZYNQ PL 添加IP 串口UART AXI UART16550
  13. vue 挑战最强大脑 记忆力5分 观察力5分 推理力4分
  14. 【RDMA】使用‘无信号完成’(Working with Unsignaled completions)|IBV_SEND_SIGNALED
  15. python爬虫练习5:博客阅读量助手
  16. 计算机毕业设计php+vue基于微信小程序的音乐云系统-音乐播放系统
  17. netbeans8 EBJ模块中JPA部署问题
  18. 安卓虚拟机_安卓虚拟机雷电模拟器
  19. 马士兵python_马士兵python大数据全栈工程师
  20. mysql wal_MySQL · 引擎特性 · Innodb WAL物理格式

热门文章

  1. flowable流程实例笔记(1)
  2. Linux环境安装并配置Maven
  3. java.net.url 中文乱码_jsp get Url请求方式中文乱码问题解决办法
  4. Python bytes 函数 - Python零基础入门教程
  5. Python str / bytes / unicode 区别详解 - Python零基础入门教程
  6. mysql的存储过程放在哪里_mysql存储过程求解,错误在哪里?
  7. java什么叫元素_什么是Java做什么 - 每个元素使它们成为对象类型?
  8. mysql存儲過程_Mysql存儲過程 | 學步園
  9. python linux log,linux,python 常用的处理log的命令
  10. docker kafka互通有问题_Docker搭建kafka集群