今天我们来进行简单的网络爬虫讲解:利用用from lxml import html库+Xpath以及requests库进行爬虫
1.我们将爬取新浪微博首页要闻
我们摁F12查看网页源代码查找要闻内容所对应的HTML的代码
通过观察我们可以发现每个标题都在<h1 data-client=“headline”>下的 a标签中,其实这个就是我们标题
2.再利用requests的库先打印出我们的网页源代码

from lxml import html
import requests
html = requests.get("https://news.sina.com.cn/")
print(html.text)


我们可以看得到打印的源代码内存在乱码,我们可以通过F12点击网络,并且刷新页面
我们点击左侧的所有请求状态,再通过右侧的响应可以查看该get请求对应网页的位置,除此之外呢我么可以看到网页的代码是通过UTF-8的编码格式进行编码的
所以我们需要进行编码成utf-8在打印出来

from lxml import html
import requests
html = requests.get("https://news.sina.com.cn/")
html.encoding = 'utf-8'
print(html.text)


那么现在我们就是已经将网页的源代码获取了,我们接下来就要获取到网页的内容,其实利用xpath的时候获取的内容有两部分第一个部分就是获取属性值比如标签a中href的值或者a的文本内容都是不一样的,但是需要你们了解一下XPATH的语法规则,http://www.runoob.com/xpath/xpath-syntax.html
举一个例子我们具体的去体会一下xpath:
获取div中ul的li的a的href 的网址和a中文本内容:

只需要这样写就OK了现在我们就运行一下看看结把!

from lxml import html
import requests
import re
html1 = requests.get("https://news.sina.com.cn/")
html1.encoding = 'utf-8'
tree = html.fromstring(html1.content)
link = tree.xpath("//div[@class='nav-mod-1 nav-w']/ul/li/a/@href")
txt = tree.xpath("//div[@class='nav-mod-1 nav-w']/ul/li/a/text()")
for i in link:print(i)
for i in txt:print(i)

其实除了利用xpath的方法获取外我们也可以利用requests+re正则表达式去获取我们想要的内容,这里我们不对re正则进行细致的讲解,只讲一下我们所用到的内容:
re.findall(patrten,html)该方法是在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果没有找到匹配的,则返回空列表。
re.compile 函数
compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用。
语法格式为:

例如我们获取这个标题文字:

from lxml import html
import requests
import re
html1 = requests.get("https://news.sina.com.cn/")
html1.encoding = 'utf-8'
# tree = html.fromstring(html1.content)
# link = tree.xpath("//div[@class='nav-mod-1 nav-w']/ul/li/a/@href")
# txt = tree.xpath("//div[@class='nav-mod-1 nav-w']/ul/li/a/text()")
patren_1 = re.compile(r'<ul>.*?<li><a.*? target="_blank">(\w+)</a></li>',re.S)
link = re.findall(patren_1,html1.text)
print(link)

Python利用xpath和正则re爬取新浪新闻相关推荐

  1. 从入门到入土:Python爬虫学习|实例练手|爬取新浪新闻搜索指定内容|Xpath定位标签爬取|代码注释详解

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  2. python爬取新浪新闻

    最近公司项目比较少,楼主闲了好长时间了,作为一个刚毕业几个月的新人,心里很烦躁,只能自己找点新东西去学了.看到周围好多人都接触了爬虫,再加上楼主最近沉迷吴宣仪不可自拔,每天投票投票,投票的同时需要监控 ...

  3. 网络爬虫-----python爬取新浪新闻

    思路:先爬取首页,然后通过正则筛选出所有文章url,然后通过循环分别爬取这些url到本地 #python新闻爬虫实战 import urllib.request import re url = 'ht ...

  4. python爬虫scrapy爬取新闻标题及链接_18Python爬虫---CrawlSpider自动爬取新浪新闻网页标题和链接...

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 scrapy startproj ...

  5. python爬虫-使用BeautifulSoup爬取新浪新闻标题

    ** python爬虫-使用BeautifulSoup爬取新浪新闻标题 ** 最近在学习爬虫的技巧,首先学习的是较为简单的BeautifulSoup,应用于新浪新闻上. import requests ...

  6. 使用python网络爬虫爬取新浪新闻(一)

    使用python网络爬虫爬取新浪新闻 第一次写博客,感觉有点不太习惯!不知道怎么突然就想学学爬虫了,然后就用了一天的时间,跟着教程写了这个爬虫,!不说废话了,我将我从教程上学习的东西整个写下来吧,从头 ...

  7. Python网络爬虫爬取新浪新闻

    笔者最近由于需要研究互联网新闻,于是基于邱老师的网络爬虫实战,写了一个爬取新浪新闻的爬虫,爬取的信息有: 新闻标题 来源url 发布时间 正文 编辑者 与邱老师的爬虫相比有以下几点不同: 没有爬取新闻 ...

  8. 19Python爬虫--爬取新浪新闻标题并保存到数据库

    一.爬取新浪新闻思路 1.创建scrapy项目 2.分析新浪新闻网站静态页面代码 3.编写对应的xpath公式 4.写代码 二.项目代码 步骤1.创建scrapy项目 创建爬虫文件 scrapy st ...

  9. requests, Beautifusoup 爬取新浪新闻资讯

    ###1.爬取新浪新闻首页的新闻标题时间和链接 1 import requests 2 from bs4 import BeautifulSoup 3 4 res = requests.get('ht ...

  10. java实现爬取新浪新闻指定天数(一段时间)的头条新闻

    目标:java实现爬取新浪新闻指定天数(一段时间)的头条新闻 需要导入jar包:fastjson和Jsoup. IDEA导入jar包办法:Intellij IDEA 添加jar包的三种方式 思路: 找 ...

最新文章

  1. 算法导论 第二部分——排序和顺序统计量
  2. 无线网络连接无法停用
  3. Python高效编程技巧
  4. pcl通过积分图来进行法线预测
  5. 大龄技术人的出路在哪里?6月20日长沙-中国技术开放日邀请你一起探讨
  6. C#框架提供的几种数据结构对单值查找的效率比较
  7. IBM MQ Explore使用
  8. ARP挂马***--嗅探欺骗的最恐怖方式
  9. 【Python】SNMP的安装及Python的调用
  10. 串口转以太网服务器原理,串口服务器和串口转以太网模块的区别
  11. 录屏——制作gif图片——压缩图片大小
  12. 医院陪诊小程序怎么开发-医院陪诊小程序源码功能
  13. 数据挖掘与python实践心得体会_2年数据挖掘服务工作心得体会
  14. python多目标优化_多目标优化---帕累托(Pareto)
  15. Discuz!开发之DB、CT类解析
  16. can分析仪、usb接口can卡的的型号定义
  17. 调整VM虚拟机显示窗口大小
  18. 建筑八大员培训湖北标准员培训工程施工现场标准员的工作导则
  19. java if 定义变量赋值_Java中简单的操作(if语句、常用操作符、switch语句、变量赋值等)...
  20. 一键Ghost恢复系统的操作步骤

热门文章

  1. Android Q 下拉状态栏快捷开关解析
  2. Jib使用小结(Maven插件版)
  3. Comparing Mongo DB and Couch DB
  4. c#物联网_喜报:物联网学子获省职业院校技能大赛一等奖
  5. 分布式进阶(十四)分布式开发学习感触
  6. 32位/64位CPU的32位/64位指的是什么?
  7. shopnc数据库操作
  8. 基于梯度的PGD攻击
  9. 用生成对抗网络给雪人上色,探索人工智能时代的美学
  10. 数据结构--创建并输出二叉树的c语言实现(超详细注释/实验报告)