突发奇想地总结1.正则2018-11-01

https://xiaoyuan.zhaopin.com/full/jobs
直接复制审查的内容,或者html

  1. 我们需要找到一个合适的网址,例如:https://xiaoyuan.zhaopin.com/full/jobs ,审查之后在源代码找到相应的位置,最好是一行的源代码,不进行跨行的。
    image.png
  2. 方格类型,不是椭圆类型,椭圆类型源代码跨行需要在python语句后面增加内容,后面进行补充。


    image.png

    2.1 对比看出结果


    image.png
  3. 找的元素不是义务加载的,以下


    image.png
  4. 在使用python爬虫爬取数据的时候,经常会遇到一些网站的反爬虫措施,一般就是针对于headers中的User-Agent,如果没有对headers进行设置,User-Agent会声明自己是python脚本,而如果网站有反爬虫的想法的话,必然会拒绝这样的连接。而修改headers可以将自己的爬虫脚本伪装成浏览器的正常访问,来避免这一问题。
    5.re.S的作用
    https://www.jb51.net/article/146384.htm
    作者:Tank丶Farmer
    链接:https://www.jianshu.com/p/97b081534d7e
    來源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  5. 正则表达式中,“.”的作用是匹配除“\n”以外的任何字符,也就是说,它是在一行中进行匹配。这里的“行”是以“\n”进行区分的。a字符串有每行的末尾有一个“\n”,不过它不可见。
    如果不使用re.S参数,则只在每一行内进行匹配,如果一行没有,就换下一行重新开始,不会跨行。而使用re.S参数以后,正则表达式会将这个字符串作为一个整体,将“\n”当做一个普通的字符加入到这个字符串中,在整体中进行匹配。

第一次程序

import requests
import re

headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}

url=url='https://xiaoyuan.zhaopin.com/full/jobs'

https://xiaoyuan.zhaopin.com/full/jobs'
res = requests.get(url,headers=headers)
names=re.findall('<p class="searchResultCompanyname"><span>(.*?)</span></p>',res.text)
places=re.findall('<span>城市:<em class="searchResultJobCityval">(.*?)</em></span>',res.text)
peoples=re.findall('<span>人数:<em class="searchResultJobPeopnum">(.*?)</em></span>',res.text)
types=re.findall('<span>公司类型:<em>(.*?)</em></span>',res.text)
print(name,place,people,type)

一.正则

  1. 首先引入库
import requests     
import re           #正则库
import csv         #保存csv文件调用的库
  1. 写入headers,防止封掉IP
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
  1. 输入爬取的地址url,并且用res,可以自定义红色位置,def功能与后面存入csv联系起来用。单纯输出不需要定义函数。


    image.png
url='https://xiaoyuan.zhaopin.com/full/jobs'
res = requests.get(url,headers=headers)
  1. 审查之后,找到爬取的代码,copy html,在源代码中找到,一步一输出,判断查找的是否正确,。


    yi'bu'yi'shu'chu

一、 引入存入csv功能

  1. 在上述基础上定义函数,并对以下内容进行缩进


    image.png
  2. 加入for循环,使用writer.writerow,
    types=re.findall('<span>公司类型:<em>(.*?)</em></span>',res.text)
    for name,place,people,type in zip(names,places,peoples,types):
        print(name,place,people,type)
        writer.writerow([name,place,people,type])
image.png
  1. 加入以下内容,并对url进行改动,或者删除注释部分,在下面重新添加,但是添加的网址需要能够显示换页功能,即右侧箭头指向。
if __name__ == '__main__':
    fp = open('C:/Users/秦振凯/Desktop/text.csv', 'w', encoding='utf-8', newline='')
    writer = csv.writer(fp)
    writer.writerow(['name', 'place', 'people','type'])
    urls = ['https://xiaoyuan.zhaopin.com/full/jobs/0_0_0_0_0_-1_0_{}_0'.format(str(i)) for i in range(0, 60, 30)]
    for url in urls:
        get_info(url)
image.png
import requests
import re
import csv
headers ={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}

# url='https://xiaoyuan.zhaopin.com/full/jobs'
def get_info(url):
    res = requests.get(url,headers=headers)
    names=re.findall('<p class="searchResultCompanyname"><span>(.*?)</span></p>',res.text)
    places=re.findall('<span>城市:<em class="searchResultJobCityval">(.*?)</em></span>',res.text)
    peoples=re.findall('<span>人数:<em class="searchResultJobPeopnum">(.*?)</em></span>',res.text)
    types=re.findall('<span>公司类型:<em>(.*?)</em></span>',res.text)
    for name,place,people,type in zip(names,places,peoples,types):
        print(name,place,people,type)
        writer.writerow([name,place,people,type])

if __name__ == '__main__':
    fp = open('C:/Users/秦振凯/Desktop/text.csv', 'w', encoding='utf-8', newline='')
    writer = csv.writer(fp)
    writer.writerow(['name', 'place', 'people','type'])
    urls = ['https://xiaoyuan.zhaopin.com/full/jobs/0_0_0_0_0_-1_0_{}_0'.format(str(i)) for i in range(0, 60, 30)]
    for url in urls:
        get_info(url)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,638评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 12,993评论 2 59
  • 一直以来都是那种自认为一切良好的人,嘻嘻哈哈的过了一天又一天,总以为自己会一直是那个幸运的。可成绩出来的时候才...
    默萱阅读 116评论 0 0
  • 2018-1-29 星期一 天气:晴 最近妈妈又忙着培训,都顾不上我了。中午也不回来喂奶,就忙...
    元朗妈妈阅读 372评论 0 2
  • 一个人,一本书,一杯茶,一帘梦。有时候,寂寞是这样叫人心动。天天如此,下班回到家后依旧是泡茶、切果盘、烧水给我...
    珺公子阅读 162评论 0 0