手把手教你用用Python爬取上道网的赞助公司名称

一、前言

上道网是一个手游发行推荐与投融资交易平台。平台聚集手游CP、手游发行、手游渠道、手游外包,投资商以及IP授权商,IP合作、一站式服务。并为之提供合作交易机会。

今天教如何去爬取上道网的赞助公司名称,方便有关人士投资。

二、实现目标

获取对应的公司名称,保存文档。

三、项目准备

软件:PyCharm

需要的库:requests,fake_useragent,time

网址:http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-{}.html

四、项目分析  

如何网页访问?

1http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-1.html 2 3http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-2.html 4 5http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-3.html 6 7http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-4.html

点击下一页时,每增加一页p-{}.html自增加1,用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。

五、项目实现

1. 定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库、请求地址。

1import requests 2from lxml import etree 3from fake_useragent import UserAgent 4import time 5 6class Shangdao(object): 7 def __init__(self): 8 self.url = "http://www.daogame.cn/qudao-p-2.html?s=/qudao-p-{}.html" #网站 9 def main(self): 10 pass 11 12if __name__ == '__main__': 13 Siper = Shangdao() 14 Siper.main()

2. 随机产生UserAgent,防止反爬。

1for i in range(1, 50): 2 self.headers = { 3 'User-Agent': ua.random, 4 }

3. 发送请求  获取响应, 页面回调,方便下次请求。

1 def get_page(self, url): 2 res = requests.get(url=url, headers=self.headers) 3 html = res.content.decode("utf-8") 4 return html

4. 获取公司名称,for遍历。

1 def page_page(self, html): 2 parse_html = etree.HTML(html) 3 one = parse_html.xpath('//h2/a/text()') 4 for i in one: 5 print(i)

5. 写入文档。

1 f = open('公司.doc', 'a', encoding='utf-8') # 以'w'方式打开文件 2 f.write(str(i))

6. 调用方法,实现功能。

1 def main(self): 2 stat = int(input("输 入 开 始 (2开始):")) 3 end = int(input("输 入 结 束:")) 4 for page in range(stat, end + 1): 5 url = self.url.format(page) 6 print(url) 7 html = self.get_page(url) 8 self.page_page(html) 9 print("==================第%s页爬取成功!!!!=====================" % page)

项目优化:

1. 设置时间延时。

time.sleep(1.4)

六、效果展示

点击绿色小三角运行输入起始页,终止页(  从0页开始 )。

渠道公司名,结果显示控制台。

保存文档。

七、总结

1. 不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。

2. 希望通过这个项目,能够帮助了解xpath解析页面的基本流程,字符串是如何拼接,format函数如何运用。

3. 本文基于Python网络爬虫,利用爬虫库,实现爬取上道网,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

想学习更多Python网络爬虫与数据挖掘知识,可前往专业网站:http://pdcfighting.com/

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

Python3:sqlalchemy对mysql数据库操作,非sql语句

Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''

4cast

4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页: