Python 爬虫爬取网页内容(lxml+requests)(#有手就行系列)

#有手就行系列 – 网页爬取(简易版)

1、准备阶段(链接代码)

	1)下载链接的代码文档(anaconda打开)或是文末的代码
	2)进行尝试,点击运行查看是否有报错
	tips:1、点击“1”箭头所示运行
		  2、注意“2”箭头所示处报错,查看自己是否安装相应的库

👇tips
图例

2、代码阶段

1)获取网站全部内容(内容都在注释中,按步骤修改即可)

html_url="https://www.csdn.net"
#html_url="想爬取的网站网址"
#此处我们以csdn网站为例,自己使用时修改这部分内容即可(即填入自己所需爬取网站网址)
encoding_name='utf-8'
#encoding_name='想使用的encoding'
#'r','utf-8','GBK'
#此处我们需要使用‘utf-8’,常见的encoding已列举,一个不行换一个


import requests
import re
from lxml import etree
def html_get(html_url,encoding_name):
    headers={'user-agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'}      
    response=requests.get(html_url,headers=headers)
    response.encoding=encoding_name
    html_text=response.text
    html=etree.HTML(html_text)
    return html,html_text
    
original_html,html_text=html_get(html_url,encoding_name)
original_html
#这一段直接复制黏贴即可
	tips:1、注意运行后输出时是否存在element(即Element html at xxxx “1”箭头所指)
		  2、注意查看“2”箭头所示输出内容,查看是否有乱码,网站内容是否存在,有乱码时更换encoding

在这里插入图片描述

2)获取指定内容

	例如我们现在需要社区大事板块的所有内容的标题,以及链接网址

我们先选择一个小版块的标题并右击检查
👆我们先选择一个小版块的标题并右击检查
在右侧跳出的页面逐层上移,会发现左侧网页出现蓝色区域,上移直至蓝色区域覆盖全部板块内容
👆在右侧跳出的页面逐层上移,会发现左侧网页出现蓝色区域,上移直至蓝色区域覆盖全部板块内容
然后收起所有的多余内容,找到每一个小版块的xpath地址
👆然后收起所有的多余内容,找到每一个小版块的xpath地址在这里插入图片描述
👆同样的找到全部大事板块的xpath在这里插入图片描述
右击此处选择copy->copyXpath,并黏贴至如下xpath中,查看是否有输出

element = original_html.xpath('//*[@id="floor-www-index_558"]/div/div[2]/div[1]/div[2]/div[1]')
#element = original_html.xpath('你copy的xpath填入这里')
element


👆我们可以看到每个小版块是div

element_full = element[0].xpath('./div')
#element_full = element[0].xpath('./这里修改小版块的内容例如div')
element_full

我们输出的形式是列表嵌套列表,每个小列表中是需要的内容,我们这里需要小版块的全部链接以及标题,老样子右键点击检查在这里插入图片描述
我们仔细查看这个小版块,找到标题藏在的地方即

<span class="blog-text">如何用一张照片进行GPS定位?—最好的语言Java实现起来就这么简单!【手把手教程+完整代码】</span>

一般找寻网页链接,使用/@href,而找寻文字使用/text()

content_full = []
for i in element_full:
    content = []
    href = i.xpath('.//@href')
    #href = i.xpath('.//@href') 双斜杠代表查询所有的链接
    title = i.xpath('.//span[@class="blog-text"]/text()')
    #title = i.xpath('.//这里填所需文字前的标签如span[@class="blog-text"]/text()')
    content.append(href)
    content.append(title)
    content_full.append(content)
content_full

在这里插入图片描述
👆输出

3、补充内容

1)网页内容不尽相同,但是查找xpath方法类似
2)xpath使用有更多的内容可以搜索相应文档阅读
3)有分页多个页数的网站时,先查找一共有几页,再for循环搭建html_url即可
4)有的需要查找文字中的某些内容,请查阅re的使用
5)xpath的输出是列表格式,也可以’’.join方法转化为字符串

4、代码

html_url="https://www.csdn.net"
encoding_name='utf-8'
#'r','utf-8','GBK'
import requests
import re
from lxml import etree
def html_get(html_url,encoding_name):
    headers={'user-agent' : 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'}      
    response=requests.get(html_url,headers=headers)
    response.encoding=encoding_name
    html_text=response.text
    html=etree.HTML(html_text)
    return html,html_text
    original_html,html_text=html_get(html_url,encoding_name)
original_html
html_text
element = original_html.xpath('//*[@id="floor-www-index_558"]/div/div[2]/div[1]/div[2]/div[1]')
element
element_full = element[0].xpath('./div')
element_full
content_full = []
for i in element_full:
    content = []
    href = i.xpath('.//@href')
    title = i.xpath('.//span[@class="blog-text"]/text()')
    content.append(href)
    content.append(title)
    content_full.append(content)
content_full
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值