慧聪网爬虫

import requests
from bs4 import BeautifulSoup
import pandas as pd
import gevent
from gevent import monkey;monkey.patch_all()
import time
import re
import random

UA_list = [
‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36‘
,‘Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; GWX:MANAGED)‘,‘Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; WOW64; Trident/6.0)‘,‘Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)‘,‘Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; GWX:MANAGED)‘]

proxies_list=[{‘proxy‘: ‘http:\\10.220.70.254:808‘}, {‘proxy‘: ‘http:\\10.221.70.254:808‘}, {‘proxy‘: ‘http:\\10.222.70.254:808‘}, {‘proxy‘: ‘http:\\10.223.70.254:808‘}]

headers = {‘User-Agent‘:random.choice(UA_list),‘Referer‘:‘http://b2b.hc360.com/‘}

def diyu(sheng,shi):
    for i in range(100):
        or_url = ‘http://s.hc360.com/?w={}&mc=enterprise&ee={}&z=%D6%D0%B9%FA%3A{}%CA%A1%3A{}‘.format(sheng,i+1,sheng,shi)
        res = requests.get(or_url,headers = headers,)
        soup = BeautifulSoup(res.text,‘lxml‘)
        urls = soup.select(‘dd.til > h3 > a‘)
        for url in urls:
            return url.get(‘href‘)

def url_parser(urld):
    res = requests.get(urld, headers=headers,proxies=random.choice(proxies_list),timeout=60)
    if res.status_code !=‘404‘:
        soup = BeautifulSoup(res.text, ‘lxml‘)
        flag = re.findall(r‘公司黄页‘,str(soup))
        if len(flag)>0:
            return url_HYparer(soup)
        else:
            or_url = urld + ‘shop/company.html‘
            res = requests.get(or_url, headers=headers,proxies=random.choice(proxies_list),timeout=60)
            soup1 = BeautifulSoup(res.text, ‘lxml‘)
            flag1 = re.findall(r‘手机极速版‘,str(soup1))
            flag2 = re.findall(r‘未认证 ‘, str(soup1))
            if len(flag1)>0:
                return url_SJJSparer(soup1)
            elif len(flag2)>0:
                return url_uncertifie(soup1)
            else:
                return url_NSJJSparer(soup1)

def url_NSJJSparer(soup):

    data = {
        ‘conpany_name‘:soup.select(‘td.contitlebg > span‘)[0].text.strip(),
        ‘name‘:soup.select(‘span.bluezzbold.font14‘)[0].text.strip(),
        ‘address‘:soup.select(‘td.conbg.conbg2 > ul:nth-of-type(1) > li:nth-of-type(2)‘)[0].get(‘title‘),
        ‘phone‘:re.search(r‘\d{11}|\d{4}-\d{8}‘,str(soup)).group()}
    return data

def url_HYparer(soup):
    data = {
    ‘conpany_name‘:soup.select(‘div.sub-info > h1‘)[0].text,
    ‘name‘:soup.select(‘samp‘)[0].text,
    ‘address‘:soup.select(‘div.tableCon > div:nth-of-type(2) > ul > li:nth-of-type(3) > span.conRight‘)[0].text,
    ‘phone‘:soup.select(‘div.tableCon > div:nth-of-type(2) > ul > li:nth-of-type(2) > span.conRight‘)[0].text
    }
    return data

def url_SJJSparer(soup):
    data = {
        ‘conpany_name‘:soup.select(‘div.ContacCon1 > h3‘)[0].text.strip(),
        ‘name‘:soup.select(‘div.ContactsName > span > a‘)[0].text.strip(),
        ‘address‘:soup.select(‘div.ContacCon3 > ul > li:nth-of-type(1) > div.con3Rig‘)[0].text.strip(),
        ‘phone‘:re.search(r‘\d{11}|\d{4}-\d{8}‘,str(soup)).group()}
    return data

def url_uncertifie(soup):
    data = {
        ‘conpany_name‘:soup.select(‘td.contitlebg_1 > span‘)[0].text.strip(),
        ‘name‘:soup.select(‘span.bluezzbold.font14‘)[0].text.strip(),
        ‘address‘:soup.select(‘td.conbg.conbg2 > ul:nth-of-type(1) > li:nth-of-type(2)‘)[0].text.strip(),
        ‘phone‘:re.search(r‘\d{11}|\d{4}-\d{8}‘,str(soup)).group()}
    return data

if __name__==‘__main__‘:
    with open(‘uu.txt‘, ‘r‘) as f:
        info_total = []
        for i in f:
            try:
                info_ary = url_parser(i.strip())
                time.sleep(random.randint(1,5))
                info_total.append(info_ary)
                print(len(info_total))
            except Exception as e:
                print(e, i.strip())
        df = pd.DataFrame(info_total)
        df.to_excel(‘huicong_beijing.xlsx‘)
        print(‘Done‘)
时间: 2024-11-07 16:29:16

慧聪网爬虫的相关文章

深网爬虫:deepclient

deepclient:深网爬虫客户端,旨在侧重于抓取深层数据的爬虫工具. 特性 deepclient使用httpclient3.1做爬取工具. 1,保持服务器验证审核cookies 2,集成xpath,json,xml解析器.

从教务网爬虫程序到腾讯云上的运行

从教务网爬虫程序到腾讯云上的运行 主要内容有以下几方面: pip3以及相关python包的安装 mysql数据库的连接以及相关操作 腾讯云服务器的设置与连接,文件传输等操作 pip3以及相关python包的安装 在使用python3时,需要安装对应的pip版本,即pip3.ubuntu系统下的安装方式如下: $ sudo apt-get install python3-pip 安装完成后就可以使用pip3来安装相应的python包,如requests包的安装方式如下: $ sudo pip3 i

第5课-中国天气网爬虫案例

一.中国天气网爬虫案例 #中国天气网爬虫 import requests from pyecharts.charts import Bar from bs4 import BeautifulSoup import copy import html5lib datas = [] data = { "city":None, "day":None, "higher_temp":None, "lower_temp":None } HE

GuozhongCrawler看准网爬虫动态切换IP漫爬虫

有些关于URL去重的方面代码没有提供,须要自己去实现.主要这里提供思路 项目地址:http://git.oschina.net/woshidaniu/GuozhongCrawler/tree/master/example/changeProxyIp/ 首先爬虫入口类: public class PervadeSpider { public static void main(String[] args) { CrawTaskBuilder builder = CrawlManager.getIns

Spring Boot 慕课网爬虫

一.项目简介(Demo简介) 慕课网...打了三个字,还是不介绍了避免广告.一个简单爬虫该网站的demo. 地址:https://www.imooc.com/course/list?c=springboot 二.项目结构 项目多层架构:common层,controller层,entity层,repository层,由于Demo比较简单就没有细分那么多了(偷懒). 三.项目说明 F12 查看页面html结构,发现如下 本次我只抽取了 课程名称,url,等级,描述四个字段. 数据库,创建imooc_

基于Node.js的裁判文书网爬虫分析

因为笔者在线上实习时的需求,需要做一个裁判文书网的爬虫,本以为,一个政府网站爬虫嘛会有多难?但当笔者开始爬的时候,笔者发现自己错了,困难重重!好在最后解决了,笔者将代码重构放在github上之后在这里写下了写这个爬虫的整个思路. 笔者实现的爬虫地址:https://github.com/cuijinyu/lawBug 原理分析 获取列表 首先,打开裁判文书网的页面,进入我们眼帘的是这样的画面 一个大大的搜索框,我们的思路大致也从这里开始. 我们打开开发者工具,进行一次搜索,看看都会发生哪些事情.

2018-10-09中国裁判文书网爬虫vl5x和DocID分析

本来是想要抓取食药监的药品数据,看到js加密很繁琐,调了一个星期没有结果,想看看其他类似网站的js加密情况,发现裁判文书网的加密好像不是太复杂,经过两天的分析和编写,基本把vl5x加密和DocID解密步骤用python代码实现了(不过仍然有一段JsFuck代码需要用execjs),以此文作为记录,希望也能对他人有所帮助. 完整demo代码上传Github,有兴趣的童鞋欢迎star,后续如果网站有变动,将会持续跟进. Github传送门:https://github.com/zc3945/caip

煎蛋网爬虫之JS逆向解析img路径

图片使用js onload事件加载 <p><img src="//img.jandan.net/img/blank.gif" /><span class="img-hash">Ly93eDEuc2luYWltZy5jbi9tdzYwMC8wMDd1ejNLN2x5MWZ6NmVub3ExdHhqMzB1MDB1MGFkMC5qcGc=</span></p> 找到soureces 文件中对应的js 方法jan

链家网爬虫同步VS异步执行时间对比

异步执行时间 import time import asyncio import aiohttp from lxml import etree start_time = time.time() async def get_url(url): session = aiohttp.ClientSession() response = await session.get(url) result = await response.text() terr = etree.HTML(result) ret