python爬取网业信息案例

需求:爬取网站上的公司信息

代码如下:

import json
import os
import shutil
import requests
import re
import time

requests.packages.urllib3.disable_warnings()

#通过url请求接口,获取返回数据
def getPage(url,headers):
    try:
        response = requests.get(url=url, headers=headers, verify=False)
        response.encoding = ‘utf-8‘
        if response.status_code == 200:
            #print (response.text)
            return response.text
        else:
            print(‘请求异常:{} status:{}‘.format(url, response.status_code))
    except Exception as e:
            print(‘请求异常: {} error: {}‘.format(url, e))
            return None

#删除文件的重复行
def file2uniq(file,destpath):
    sum = 0
    sum_pre = 0
    addrs = set()
    with open(file, ‘r‘,encoding=‘utf8‘) as scan_file:
        for line in scan_file.readlines():
            sum_pre += 1
            # addr = get_addr(line)
            # line.decode(‘utf8‘)
            addrs.add(line)
    scan_file.close()
    with open(destpath, ‘w‘,encoding=‘utf8‘) as infile:
        while len(addrs) > 0:
            sum += 1
            infile.write(addrs.pop())
    infile.close()

    if (os.path.exists(file)):
        os.remove(file)
    try:
        os.rename(destpath, file)
    except Exception as e:
        print (e)
        print (‘rename file fail\r‘)
    else:
        print (‘rename file success\r‘)
    #print(addrs)
    print("去重之前文本条数: "+str(sum_pre))
    print("去重之后文本条数: "+str(sum))
    return sum_pre,sum

#通过正则表达式提取页面内容
def parseHtml(html):
    #pattern = re.compile(r‘<tr> <td class="tx">.+\s(.+)‘, re.I)  # 不区分大小写 匹配股票名称

    # 不区分大小写  获取完整公司名
    pattern = re.compile(r‘<td class="text-center">.+</td> <td> <a href="/firm_.+">\s(.+)‘, re.I)

    # 获取证券公司
    #pattern = re.compile(r‘\t(.+)[\s]+</a> </td> <td class="text-center">.+</td> <td class="text-center">.+</td> </tr>‘, re.I)
    #pattern = re.compile(r‘\t(.+)\s\t\t\t\t\t\t\t  </a> </td> <td class="text-center">.+</td> <td class="text-center">.+</td> </tr> <tr> <td class="tx">‘, re.I)  # 不区分大小写
    #pattern = re.compile(r‘</a>\s</td>\s<td class="text-center">.+</td> <td> <a href="/firm_.+.html">\s(.+)[\s]+</a> </td> <td> <a href="/firm_.+.html">\s(.+)‘, re.I)  # 不区分大小写 匹配股票名称

    items = re.findall(pattern, html)
    #print (items)
    for item in items:
        yield {
            ‘orgName‘: item.strip(),
        }

def write2txt(content):
    with open(file, ‘a‘, encoding=‘utf-8‘) as f:
        f.write(json.dumps(content, ensure_ascii=False) + ‘\n‘)

def removeStr(old_str,new_str):
    """
    with open(‘sanban.txt‘, ‘a‘, encoding=‘utf-8‘) as fpr:
        content = fpr.read()
    content = content.replace(r‘{"orgName": "‘, ‘‘)
    content = content.replace(r‘"}‘, ‘‘)
    """
    file_data = ""
    with open(file, ‘r‘, encoding=‘utf-8‘) as f:
        for line in f:
            if old_str in line:
                line = line.replace(old_str,new_str)
            file_data += line
    with open(file, ‘w‘, encoding=‘utf-8‘) as f:
        f.write(file_data)

def main(page):
    #url = ‘https://www.qichacha.com/elib_sanban.html?p=‘ + str(page)
    url = ‘https://www.qichacha.com/elib_ipo.html?p=‘ + str(page)  # https://www.qichacha.com/elib_ipo.html?p=2
    headers = {
        ‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36‘,
    }
    print (url)
    html = getPage(url,headers)
    #print (html)
    for item in parseHtml(html):
        print(item)
        write2txt(item)
    removeStr(r‘{"orgName": "‘,‘‘)
    removeStr(r‘"}‘, ‘‘)

    file2uniq(file, destpath)

if __name__ == ‘__main__‘:
    file = r‘orgName.txt‘
    #file = r‘midOrg.txt‘
    #sourcepath = r‘sanban.txt‘
    destpath = r‘temp.txt‘
    for page in range(1,2):
        main(page)
        time.sleep(1)

原文地址:https://www.cnblogs.com/qmfsun/p/11322893.html

时间: 2024-11-10 12:24:44

python爬取网业信息案例的相关文章

python爬取网易云音乐歌曲评论信息

网易云音乐是广大网友喜闻乐见的音乐平台,区别于别的音乐平台的最大特点,除了"它比我还懂我的音乐喜好"."小清新的界面设计"就是它独有的评论区了------各种故事汇,各种金句频出.我们可以透过歌曲的评论数来判断一个歌者的市场分量和歌曲的流行度.言归正传,如果我们想要简单爬取指定歌曲的评论内容来做词云或者其他相关数据分析,有没有容易上手的好方法呢? 首先,我们打开网易云音乐的网页版:https://music.163.com/,随便选择一首歌曲,如林志炫版本的<

python爬取网易云周杰伦所有专辑,歌曲,评论,并完成可视化分析

---恢复内容开始--- 去年在网络上有一篇文章特别有名:我分析42万字的歌词,为搞清楚民谣歌手们在唱些什么.这篇文章的作者是我大学的室友,随后网络上出现了各种以为爬取了XXX,发现了XXX为名的文章.我想了想,我能不能也通过爬虫来做些什么呢?先入为主,我也以歌曲作为切入口---周杰伦,是的,我们这一代的生活成长,总是离不开周董的声音的陪伴,那我就来爬取周董的歌曲,歌曲评论,歌词,以及各种有用的信息并做一个可视化吧. 这篇文章适合于python纯小白,因为本人也是python刚刚入门,里面可能很

python爬取北京租房信息

租房助手 发现官网的筛选方式不能满足自己的需求,所以爬取相关网站制作出现在的东西来 效果预览-> <a href="https://virzc.com/2018/05/17/beijingrent/#more" target="_blank">在线预览</a> ###下面进行详细分析一.首先爬取起始地和终点地的路线及沿途地铁站名称 1.爬取8684.cn的地铁查询: pattern = 'http://bjdt.8684.cn/so.p

Python爬取51job职位信息

# -*- coding: utf-8 -*- # @Time : 2018/3/1 16:38 # @Author : HT # @Email : [email protected] # @File : 51job.py # @Software: PyCharm import urllib import re import sys reload(sys) sys.setdefaultencoding('utf8') i = 0#统计爬取总条目 def url_input(url): get_h

python爬取主播信息

之前学过python的爬虫技术,现在回顾一下看看还会不会,果然有坑. 先爬取了微博评论网友的id代码如下 import requestsurl = 'https://m.weibo.cn/api/comments/show?id=4188633986790962&page=6h = requests.get(url)print(h.json()['data']['data'][0]['user']['id']) 执行的时候报错 Traceback (most recent call last):

爬虫:工作中编写的一个python爬取web页面信息的小demo

最近公司要求编写一个爬虫,需要完善后续金融项目的数据,由于工作隐私,就不付被爬的网址url了,下面总结下spider的工作原理. 语言:python:工具:jupyter: (1)使用requests模块,获取url页面. import requests url = "http://www.~~~~~~~~~~~~~~~~~~~~~~~~~~" r = requests.get(url) (2)解析html页面(若是pdf页面需要其他工具模块)需要使用BeautifulSoup模块,把

Python爬虫_用Python爬取csdn页面信息目录

1.原理: 这个程序可以实现批量获取到某一个CSDN博客的个人信息.目录与链接的对应,并存到一个本目录的mulu.txt文件中 2.具体代码: # -*- coding: cp936 -*- import urllib.request# import re# import sys# import time# import random import string headers = {# 'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1;

python爬取网易云音乐歌单音乐

在网易云音乐中第一页歌单的url:http://music.163.com/#/discover/playlist/ 依次第二页:http://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8&limit=35&offset=35 依次第三页:http://music.163.com/#/discover/playlist/?order=hot&cat=%E5%85%A8%E9%83%A8

[Python学习] 简单爬取CSDN下载资源信息

这是一篇Python爬取CSDN下载资源信息的例子,主要是通过urllib2获取CSDN某个人所有资源的资源URL.资源名称.下载次数.分数等信息:写这篇文章的原因是我想获取自己的资源所有的评论信息,但是由于评论采用JS临时加载,所以这篇文章先简单介绍如何人工分析HTML页面爬取信息. 源代码 # coding=utf-8 import urllib import time import re import os #****************************************