美文网首页
正则表达式爬取网页内容

正则表达式爬取网页内容

作者: haokeed | 来源:发表于2019-05-12 18:10 被阅读0次

基本方法

import re

# search 查找
string="pythonpython"
pat='th'
r1=re.search(pat,string)
print(r1)

# match 与第一个进行匹配
pat2='th'
r2=re.match(pat2,string)
print(r2)
pat3='py'
r3=re.match(pat3,string)
print(r3)

# findall 全局匹配函数
pat4='th'
r4=re.findall(pat4,string) # 所有匹配到的都返回
print(r4)

pat='py(.*)on' # 贪婪模式
r=re.findall(pat,string)
print(r)

pat='py(.*?)on' # 非贪婪模式
r=re.findall(pat,string)
print(r)
image.png
image.png

模式修正符

# 模式修正符
# I 匹配时忽略大小写
# S 匹配换行符
# M 多行匹配

string='Python'
pat='pyt'
r=re.findall(pat,string,re.I)
print(r)

string='''Python
baidu
'''
pat='t.*d'
r=re.findall(pat,string,re.S)
print(r)
image.png

51 job 爬虫 用正则表达式提取网页信息

import re
import requests


# 获取网页数据
url="https://search.51job.com/list/010000,000000,0000,00,9,99,Java%2520%25E5%25BC%2580%25E5%258F%2591,2,1.html"
res=requests.get(url)
res.encoding='gbk'

# 职位
pat='<a target="_blank" title="(.*?)" href="(?:.*?)" onmousedown="(?:.*)">'
position=re.findall(pat,res.text)
print(position)
print(len(position))

# 公司
pat='<span class="t2"><a target="_blank" title="(.*)" href=".*">.*</a></span>'
company=re.findall(pat,res.text)
print(company)
print(len(company))

# 地址
# pat='<span class="t3">(.*)</span>'
pat='<div class="el">(?:.*?)<span class="t3">(.*?)</span>'
addrs=re.findall(pat,res.text,re.S) # 采用模式修符
print(addrs)
print(len(addrs))

# 工资
pat='<div class="el">(?:.*?)<span class="t4">(.*?)</span>'
salary=re.findall(pat,res.text,re.S) # 采用模式修正符
print(salary)
print(len(salary))

from pandas import DataFrame
jobinfo=DataFrame([position,company,addrs,salary]).T
jobinfo.columns=["职位","公司","地址","工资"]
jobinfo
image.png
image.png
image.png

爬取多页信息

# 多页爬取信息
import re
import requests
from pandas import DataFrame
import pandas as pd

jobinfoAll=DataFrame()

for i in range(1,10):
    # 获取网页数据
    url="https://search.51job.com/list/010000,000000,0000,00,9,99,Java%2520%25E5%25BC%2580%25E5%258F%2591,2,"+str(i)+".html"
    res=requests.get(url)
    res.encoding='gbk'

    # 职位
    pat='<a target="_blank" title="(.*?)" href="(?:.*?)" onmousedown="(?:.*)">'
    position=re.findall(pat,res.text)

    # 公司
    pat='<span class="t2"><a target="_blank" title="(.*)" href=".*">.*</a></span>'
    company=re.findall(pat,res.text)

    # 地址
    # pat='<span class="t3">(.*)</span>'
    pat='<div class="el">(?:.*?)<span class="t3">(.*?)</span>'
    addrs=re.findall(pat,res.text,re.S) # 采用模式修符

    # 工资
    pat='<div class="el">(?:.*?)<span class="t4">(.*?)</span>'
    salary=re.findall(pat,res.text,re.S) # 采用模式修正符

    jobinfo=DataFrame([position,company,addrs,salary]).T
    jobinfo.columns=["职位","公司","地址","工资"]
    jobinfoAll=pd.concat([jobinfoAll,jobinfo])
    
jobinfoAll
image.png
image.png

相关文章

  • Python第一个图片爬虫

    爬虫的基本步骤: 向目标网页URL发送请求获取响应的内容 根据要爬取的内容编写正则表达式或xpath抓取 将爬取内...

  • 爬取网页内容

    但是有的网站不允许,因此可以模拟浏览器进行访问。

  • 集搜客爬取数据方法

    1.安装集搜客软件 2.确定目标网页地址,确定爬取内容类型:只涉及本网页内容列表还是需要层级爬取?层级爬取就是需要...

  • 正则表达式爬取网页内容

    基本方法 模式修正符 51 job 爬虫 用正则表达式提取网页信息 爬取多页信息

  • Python 学习笔记 094

    本周学习内容 07 本次分享主题 自动爬取网页内容并保存为TXT 06 自动爬取小说 1.简单逻辑 1.1请求网页...

  • JAVA爬取网页内容

    摘录别人的代码: https://blog.csdn.net/guoxiaolongonly/article/de...

  • Python爬虫入门:以东方财富网为例

    网络爬虫(Web Spider),根据网页地址爬取网页内容,从而获取各类数据,实现多种多样的功能。下面就以爬取东方...

  • 利用API获取豆瓣即将上映的20条电影信息

    利用爬虫爬取网页数据主要有两种方式:第一种是直接爬取HTML网页内容,它的好处是可以自定义爬取的内容,弊端是很多时...

  • Java爬虫(HttpClient)

    网络爬虫主要功能就是对网页内容进行爬取,然后根据特定需求对内容进行过滤分析。针对网页内容爬取,假设需求为要对一个网...

  • Python爬虫实战

    爬取小说网站上的小说并下载到本地 导入库 request:用来请求网页re:导入正则表达式 确定需要爬取的小说网址...

网友评论

      本文标题:正则表达式爬取网页内容

      本文链接:https://www.haomeiwen.com/subject/togcaqtx.html