慧聪网爬虫

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')

 

转载于:https://www.cnblogs.com/Erick-L/p/6945009.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 企业信息采集器,是采集里面的买卖通会员和普通会员信息的一款全自动信息提取软件。提取的信息包括:企业名称、账号、联系人姓名、手机、电话、传真 、地址、邮编、公司址。这些信息可以用于市场营销,比如:群发传真,群发手机短信,发发群发,电话营销,电子邮件群发,产品宣传册大面积邮递。这些信息还可以用 于市场调查,分析客户分布情况,分析竞争对手的情况等。软件能够按照关键词、省份、城市、经营类型,搜索公司库和产品库,自定义设置搜索范围,快速抓取上述信息 。 企业信息采集器的特点: 1.软件体积小,下载后解压到本地文件夹,就可以打开使用,勿需安装。绿色软件,不绑定任何其他商业插件。 2.界面清晰,操作简便快捷,容易掌握使用,还有在线的使用演示视频。 3.免费自动在线升级到最新版本,也可以手动升级。 4.点击【预览信息】按钮,可以浏览抓取的信息,以作进一步的分析。 5.搜索产品库,以锁定高质量的目标客户群,抓取对口的客户信息。 6.抓取的信息可以导出到外部CSV文件,可以用Excel程序打开,以便使信息可以导入其他营销软件里面。 7.软件自动免费终身升级,使本采集器能够及时抓取升级后的阿里巴巴站公司库和产品库里的信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值