python爬虫 request+lxml爬取黄页88网企业信息

黄页88网: 简称黄页网或者黄页88,是由互联网资深人士创办于2009年11月。是一家整合企业黄页、分类信息以及时下流行的SNS社区三方面优势于一体定位于服务B2B平台的网站。主要帮助企业宣传推广公司品牌和产品,黄页88网精细划分了82个大行业分类,并且在每个大的分类下又进行了二级和三级行业细分,更加方便网友对所关注信息的查询和浏览,同时对企业发布的信息进行了整合分类更加方便企业对信息的管理和搜索引擎的收录。

官网: http://www.huangye88.com/
贵州IT企业: http://b2b.huangye88.com/guizhou/it/

时间: 2019/08/10

爬取内容: 公司名称,公司详情,联系电话,地点,主营产品。

操作环境: win10, python3.6, jupyter notebook,谷歌浏览器

技术难点:

  • 该网页的数据不是每一个信息都全面,有很多缺少的内容,企业的信息中经常缺失电话,地址,介绍,主营产品四个信息。
  • 唯一不会缺的是企业的名称,但是其中广告的起始标签和企业的一样,而且三个企业就有一条广告,很容易误爬。
  • 信息缺少的地方,标签也会缺少

1、请求网页源码

import requests
from lxml import etree
url = 'http://b2b.huangye88.com/guizhou/it/'
headers={
   
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'
}
res = requests.get(url,headers=headers)
res.encoding = 'utf-8'
html = etree.HTML(res.text)

2、分析网页

对于这个网页,不建议使用BeautifulSoup,因为广告和企业信息都在dl标签内,不方便定位节点。也不建议使用正则表达式,因为很多信息不全,标签的位置也不一样。
在这里插入图片描述

3、提取信息

3.1、先定位企业信息所在的节点,右键Copy Xpath,在其中进行循环查找数据;
for et in html.xpath('//*[@id="jubao"]/dl')
3.2、每个企业一定有的信息是企业名称和详情链接,都在<h4> </h4>标签中,容易区分广告,可以用它来判断其他的信息;
    for et in html.xpath('//*[@id="jubao"]/dl'):
        k = k + 1
        name = et.xpath
Python 招标爬虫是一种利用 Python 编程语言从特定的招标站上自动抓取招标信息的技术。这类爬虫通常需要解析 HTML、XML 或 JSON 等数据格式,并提取出所需的数据如招标项目名称、截止日期、招标单位、联系人等。 ### 实现步骤: 1. **确定目标站**:首先明确你要爬取哪些招标站的信息。每个站的结构可能都不一样,所以了解目标站的页面布局和数据存放位置至关重要。 2. **分析网页源码**:使用浏览器开发者工具查看目标网页的源代码,找到包含你需要信息的部分以及该部分如何通过 URL 变化而动态生成。 3. **选择合适的库**:Python 提供了多种强的库用于络请求和解析HTML内容,如 `requests` 用于发送 HTTP 请求,`BeautifulSoup` 或 `lxml` 用于解析HTML文档,`pandas` 和 `numpy` 用于处理和存储数据。 4. **编写爬虫程序**: - 使用 `requests.get()` 发送 GET 请求到目标址。 - 利用 BeautifulSoup 或 lxml 解析返回的 HTML 内容。 - 找到包含关键信息的标签及其属性(例如 `<title>`、`<a>` 标签中的文本),并提取所需数据。 - 将提取的数据整理成列表、字典或 DataFrame 存储起来。 5. **处理数据**:清洗和转换获取的数据,去除无关信息,将数据规范化以便后续使用或保存。 6. **数据持久化**:将收集的数据存储到文件(CSV、JSON)或数据库中,便于后期分析和查询。 7. **合法性检查**:务必遵守目标站的服务条款,避免过度访问影响服务器性能,必要时可以采用定时任务定期执行爬虫脚本,减少对服务器的压力。 8. **异常处理**:编写代码时需考虑到各种可能出现的问题,如络连接错误、网页结构变动、反爬策略等,并相应地添加错误处理机制。 ### 示例代码片段: ```python import requests from bs4 import BeautifulSoup def fetch_tender_data(url): response = requests.get(url) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') # 假设所有招标信息都位于 <div class="tenders"> 中 tender_divs = soup.find_all('div', class_='tenders') data_list = [] for div in tender_divs: title = div.find('h2').text.strip() deadline = div.find('span', class_='deadline').text.strip() details_url = url + div.find('a')['href'] data_list.append({ "Title": title, "Deadline": deadline, "Details_URL": details_url }) return data_list else: print(f"Request failed with status {response.status_code}") return [] # 调用函数,传入实际的目标URL data = fetch_tender_data("https://example.com/tenders") print(data) ``` ### 相关问题: 1. **如何防止爬虫被目标站识别并封禁?** 2. **如何处理网页中的动态加载数据?** 3. **如何合法合规地进行爬虫活动?**
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值