热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Python爬虫使用MongoDB提示Noconnectionadapterswerefoundfor如何解决?

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#####coding=utf-8

import urllib

import urllib.request

import pymysql

import time

import requests

import datetime

import pandas as pd

from bs4 import BeautifulSoup

import pymongo

from pymongo import MongoClient

import gridfs



#####获取mongoClient对象

client = pymongo.MongoClient("localhost", 27017)

#####获取使用的database对象

db = client.news

#####开始爬取数据

def start_crawler():

    page_num = 1

    while page_num<=1:

        url = "http://www.sxcoal.com/news/seniorsearch?GeneralNewsSearch%5Bcategory_id%5D%5B0%5D=1&GeneralNewsSearch%5Bnews_industry_ids%5D=&GeneralNewsSearch%5Bnews_tag_ids%5D=&GeneralNewsSearch%5Bport_ids%5D=&GeneralNewsSearch%5Bprov_area_id%5D=&page={}&per-page=10".format(page_num)

        print (url)

        page_num += 1

        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'

        headers = { 'User-Agent' : user_agent }

        req = urllib.request.Request(url,headers=headers)

        respOnse=requests.get(url,headers=headers)

        cOntent=response.text

        one_page = get_page_news(content)

        time.sleep(1)

        if one_page:

            to_mysql(one_page)

            time.sleep(1)

        else:

            break

    print ('新闻抓取完毕')          

#####爬取新闻标题、日期、地址到数据库

def to_mysql(one_page):

    print (one_page)

def get_page_news(content):

    soup = BeautifulSoup(content,'lxml')

    one_page_list = []

    for i in soup.find_all("div",class_="artnr"):  

        title = i.select('h4')[0].text

        url = i.a['href']

        date = i.p.find('span',class_='spandate').string.split(" ")[1]        

        one_page={'title':title,'url':url,'date':date,'type':'news','label':'www.sxcoal.com'}

        db.newstitle.insert_one(one_page)

        one_page_list.append((title,url,date))

    return one_page_list  

#####抓取具体内容

def get_new_body():

    link_list = get_news_linksfrom_database()

    for url in link_list:

        news_body = get_news_text(url)

        print('_id')

        #写入数据库

        one_page={'newsbody':get_news_text(url)}

        db.newstitle.insert_one(one_page)  

    print("新闻主体完毕!")

def get_news_linksfrom_database():  

    result = db.newstitle.find({'label':'www.sxcoal.com'},{'_id':1,'url':1})    

    return result if result else []

def get_news_text(url):

    html = requests.get(url)

    html.encoding = html.apparent_encoding

    soup = BeautifulSoup(html.text,'html.parser')

    try:

        return str(soup.find('div',{'id':'Zoom'}))

    except:

        return None

if __name__ == '__main__':  

    '''爬取新闻简要'''

#####   start_crawler() #开始爬虫

    '''爬取具体新闻'''

    get_new_body()

start_crawler()执行没有问题
get_new_body()执行报错

1
requests.exceptions.InvalidSchema: No connection adapters were found for '{'url': 'http://www.sxcoal.com/news/4564136/info', '_id': ObjectId('5a0ab7b7d1e44d23281339e6')}'

求大神解答


推荐阅读
  • 移动端常用单位——rem的使用方法和注意事项
    本文介绍了移动端常用的单位rem的使用方法和注意事项,包括px、%、em、vw、vh等其他常用单位的比较。同时还介绍了如何通过JS获取视口宽度并动态调整rem的值,以适应不同设备的屏幕大小。此外,还提到了rem目前在移动端的主流地位。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • 延迟注入工具(python)的SQL脚本
    本文介绍了一个延迟注入工具(python)的SQL脚本,包括使用urllib2、time、socket、threading、requests等模块实现延迟注入的方法。该工具可以通过构造特定的URL来进行注入测试,并通过延迟时间来判断注入是否成功。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
author-avatar
AD518最丶设计
这个家伙很懒,什么也没留下!