python爬虫爬取赶集网数据,爬虫 抓取数据

本文目录一览:

python可以爬取什么数据

一、爬取我们所需要的一线链接

channel_extract.py

这里的一线链接也就是我们所说的大类链接:

from bs4 import BeautifulSoupimport requests

start_url = ”host_url = ”def get_channel_urls(url):

wb_data = requests.get(url)

soup = BeautifulSoup(wb_data.text, ‘lxml’)

links = soup.select(‘.fenlei dt a’) #print(links)

for link in links:

page_url = host_url + link.get(‘href’)

print(page_url)#get_channel_urls(start_url)channel_urls = ”’

”’123456789101112131415161718192021222324252627282930313233343536

那么拿我爬取的58同城为例就是爬取了二手市场所有品类的链接,也就是我说的大类链接;

找到这些链接的共同特征,用函数将其输出,并作为多行文本储存起来。

二、获取我们所需要的详情页面的链接和详情信息

page_parsing.py

1、说说我们的数据库:

先看代码:

#引入库文件from bs4 import BeautifulSoupimport requestsimport pymongo #python操作MongoDB的库import reimport time#链接和建立数据库client = pymongo.MongoClient(‘localhost’, 27017)

ceshi = client[‘ceshi’] #建ceshi数据库ganji_url_list = ceshi[‘ganji_url_list’] #建立表文件ganji_url_info = ceshi[‘ganji_url_info’]123456789101112

2、判断页面结构是否和我们想要的页面结构相匹配,比如有时候会有404页面;

3、从页面中提取我们想要的链接,也就是每个详情页面的链接;

这里我们要说的是一个方法就是:

item_link = link.get(‘href’).split(‘?’)[0]12

这里的这个link什么类型的,这个get方法又是什么鬼?

后来我发现了这个类型是

class ‘bs4.element.Tab1

如果我们想要单独获取某个属性,可以这样,例如我们获取它的 class 叫什么

print soup.p[‘class’]

#[‘title’]12

还可以这样,利用get方法,传入属性的名称,二者是等价的

print soup.p.get(‘class’)#[‘title’]12

下面我来贴上代码:

#爬取所有商品的详情页面链接:def get_type_links(channel, num):

list_view = ‘{0}o{1}/’.format(channel, str(num)) #print(list_view)

wb_data = requests.get(list_view)

soup = BeautifulSoup(wb_data.text, ‘lxml’)

linkOn = soup.select(‘.pageBox’) #判断是否为我们所需页面的标志;

#如果爬下来的select链接为这样:div.pageBox ul li:nth-child(1) a span 这里的:nth-child(1)要删掉

#print(linkOn)

if linkOn:

link = soup.select(‘.zz .zz-til a’)

link_2 = soup.select(‘.js-item a’)

link = link + link_2 #print(len(link))

for linkc in link:

linkc = linkc.get(‘href’)

ganji_url_list.insert_one({‘url’: linkc})

print(linkc) else: pass1234567891011121314151617181920

4、爬取详情页中我们所需要的信息

我来贴一段代码:

#爬取赶集网详情页链接:def get_url_info_ganji(url):

time.sleep(1)

wb_data = requests.get(url)

soup = BeautifulSoup(wb_data.text, ‘lxml’) try:

title = soup.select(‘head title’)[0].text

timec = soup.select(‘.pr-5’)[0].text.strip()

type = soup.select(‘.det-infor li span a’)[0].text

price = soup.select(‘.det-infor li i’)[0].text

place = soup.select(‘.det-infor li a’)[1:]

placeb = [] for placec in place:

placeb.append(placec.text)

tag = soup.select(‘.second-dt-bewrite ul li’)[0].text

tag = ”.join(tag.split()) #print(time.split())

data = { ‘url’ : url, ‘title’ : title, ‘time’ : timec.split(), ‘type’ : type, ‘price’ : price, ‘place’ : placeb, ‘new’ : tag

}

ganji_url_info.insert_one(data) #向数据库中插入一条数据;

print(data) except IndexError: pass123456789101112131415161718192021222324252627282930

四、我们的主函数怎么写?

main.py

看代码:

#先从别的文件中引入函数和数据:from multiprocessing import Poolfrom page_parsing import get_type_links,get_url_info_ganji,ganji_url_listfrom channel_extract import channel_urls#爬取所有链接的函数:def get_all_links_from(channel):

for i in range(1,100):

get_type_links(channel,i)#后执行这个函数用来爬取所有详情页的文件:if __name__ == ‘__main__’:# pool = Pool()# # pool = Pool()# pool.map(get_url_info_ganji, [url[‘url’] for url in ganji_url_list.find()])# pool.close()# pool.join()#先执行下面的这个函数,用来爬取所有的链接:if __name__ == ‘__main__’:

pool = Pool()

pool = Pool()

pool.map(get_all_links_from,channel_urls.split())

pool.close()

pool.join()1234567891011121314151617181920212223242526

五、计数程序

count.py

用来显示爬取数据的数目;

import timefrom page_parsing import ganji_url_list,ganji_url_infowhile True: # print(ganji_url_list.find().count())

# time.sleep(5)

print(ganji_url_info.find().count())

time.sleep(5)

python大数据-爬取赶集转转商品信息10万大数据

爬取转转二手商品数据

新增文件 channel_extract.py

新建文件 page_parsing.py

打开终端,开启3个窗口,切换到程序文件夹中,第一个窗口输入 mongod , mongo ,好了, mongo 已开启

第二个窗口输入 python3 counts.py

第三个窗口输入 python3 main.py

好了,开始抓取数据了,成功

如何一个月入门Python爬虫,轻松爬取大规模数据

链接:

提取码:2b6c

课程简介

毕业不知如何就业?工作效率低经常挨骂?很多次想学编程都没有学会?

Python 实战:四周实现爬虫系统,无需编程基础,二十八天掌握一项谋生技能。

带你学到如何从网上批量获得几十万数据,如何处理海量大数据,数据可视化及网站制作。

课程目录

开始之前,魔力手册 for 实战学员预习

第一周:学会爬取网页信息

第二周:学会爬取大规模数据

第三周:数据统计与分析

第四周:搭建 Django 数据可视化网站

……

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/199280.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-04 19:15
下一篇 2024-12-04 19:15

相关推荐

  • Python计算阳历日期对应周几

    本文介绍如何通过Python计算任意阳历日期对应周几。 一、获取日期 获取日期可以通过Python内置的模块datetime实现,示例代码如下: from datetime imp…

    编程 2025-04-29
  • 如何查看Anaconda中Python路径

    对Anaconda中Python路径即conda环境的查看进行详细的阐述。 一、使用命令行查看 1、在Windows系统中,可以使用命令提示符(cmd)或者Anaconda Pro…

    编程 2025-04-29
  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python列表中负数的个数

    Python列表是一个有序的集合,可以存储多个不同类型的元素。而负数是指小于0的整数。在Python列表中,我们想要找到负数的个数,可以通过以下几个方面进行实现。 一、使用循环遍历…

    编程 2025-04-29
  • Python中引入上一级目录中函数

    Python中经常需要调用其他文件夹中的模块或函数,其中一个常见的操作是引入上一级目录中的函数。在此,我们将从多个角度详细解释如何在Python中引入上一级目录的函数。 一、加入环…

    编程 2025-04-29
  • 蝴蝶优化算法Python版

    蝴蝶优化算法是一种基于仿生学的优化算法,模仿自然界中的蝴蝶进行搜索。它可以应用于多个领域的优化问题,包括数学优化、工程问题、机器学习等。本文将从多个方面对蝴蝶优化算法Python版…

    编程 2025-04-29
  • Python清华镜像下载

    Python清华镜像是一个高质量的Python开发资源镜像站,提供了Python及其相关的开发工具、框架和文档的下载服务。本文将从以下几个方面对Python清华镜像下载进行详细的阐…

    编程 2025-04-29
  • python强行终止程序快捷键

    本文将从多个方面对python强行终止程序快捷键进行详细阐述,并提供相应代码示例。 一、Ctrl+C快捷键 Ctrl+C快捷键是在终端中经常用来强行终止运行的程序。当你在终端中运行…

    编程 2025-04-29
  • Python程序需要编译才能执行

    Python 被广泛应用于数据分析、人工智能、科学计算等领域,它的灵活性和简单易学的性质使得越来越多的人喜欢使用 Python 进行编程。然而,在 Python 中程序执行的方式不…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29

发表回复

登录后才能评论