Python爬虫,我用bs4的find方法为什么反回的是空值?怎么解决(已解决)?

代码如下:

import time
import random
import requests
import urllib
from bs4 import BeautifulSoup
headers=("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36")
opener=urllib.request.build_opener()
opener.addheaders=[headers]
urllib.request.install_opener(opener)
class UserAgent():

    def _get_UA(self,html):
        soup = BeautifulSoup(html, "html.parser")
        ip_get = []
        ip_list = soup.find_all("tr")
        for i in range(1,len(ip_list)):
            ip_both = ip_list[i].find_all("td")
            front = ip_both[1].text+':'
            ip_get.append(front+ip_both[2].text)
        time.sleep(random.randint(15,20))
        return ip_get

    def _get_html(self,html):
        if html==None:
            this_html=urllib.request.urlopen('https://www.xicidaili.com/nn/1')
        else:
            soup = BeautifulSoup(html,"html.parser")
            next_page_url = soup.find("a",class_="next_page")
            print(next_page_url)
            html = urllib.request.urlopen('https://www.xicidaili.com'+next_page_url)
            this_html = html
        return this_html

错误出在_get_html方法中else里面的代码,传入的地址没有问题,我用浏览器可以正常打开地址https://www.xicidaili.com/nn/1
主运行代码如下:

    n = User_Agent.UserAgent()
    ip_html = n._get_html(None)

    fake_ip = n._get_UA(ip_html)
    ip_html = n._get_html(ip_html)

还有报错是这么说的:

Traceback (most recent call last):
  File "E:\java4412\spider_demo\book_spider\main.py", line 21, in <module>
None
    ip_html = n._get_html(ip_html)
  File "E:\java4412\spider_demo\book_spider\User_Agent.py", line 35, in _get_html
    html = urllib.request.urlopen('https://www.xicidaili.com'+next_page_url)
TypeError: Can't convert 'NoneType' object to str implicitly

有哪位大牛帮我看看这代码哪里不对么?本小白已经要疯了。。。。。

=========================分割线=================================================================
问题已解决
原因是我原先一直用一个固定header
我找了一个别人收集的User_Agent集合,在代码中随机更换header。
更改后的代码如下:

class UserAgent():

    def _get_UA(self,soup):
        headers=("User-Agent",Headers.getheaders())
        opener=urllib.request.build_opener()
        opener.addheaders=[headers]
        urllib.request.install_opener(opener)
#         soup = BeautifulSoup(html, "html.parser")
        ip_get = []
        ip_list = soup.find_all("tr")
        for i in range(1,len(ip_list)):
            ip_both = ip_list[i].find_all("td")
            front = ip_both[1].text+':'
            ip_get.append(front+ip_both[2].text)
        time.sleep(random.randint(15,20))
        return ip_get

    def _get_html_first(self):    
        headers=("User-Agent",Headers.getheaders())
        opener=urllib.request.build_opener()
        opener.addheaders=[headers]
        urllib.request.install_opener(opener)
        this_html=urllib.request.urlopen('https://www.xicidaili.com/nn/1')
        soup = BeautifulSoup(this_html,"html.parser")
        return soup
    def _get_soup(self,soup):
        headers=("User-Agent",Headers.getheaders())
        opener=urllib.request.build_opener()
        opener.addheaders=[headers]
        urllib.request.install_opener(opener)
        next_page_url = soup.find("a",class_="next_page").get('href')
        print(next_page_url)
        html = urllib.request.urlopen('https://www.xicidaili.com'+next_page_url)
        soup = BeautifulSoup(html,'html.parser')
        return soup

进行了一定的修改,可以正确运行。其中的_print()_是我为验证结果打的。

1个回答

find找到空值,就证明没找到,你可以先打印request返回的内容,确认确实返回了内容 再然后就是你的find查找标签,可能标签不对,
先找上一级标签,print出来看行不行 一级一级往下呗。

另外 https://www.xicidaili.com/nn/1我就打不开啊

qq_42975554
废物懒猫 被禁了,另外再请教一下,爬虫要经常更换User-Agent吗
11 个月之前 回复
qq_42975554
废物懒猫 我试了下,request返回的是503,应该是被网站拉黑了,然后我伪装了头再request了一次,可以正常查找了。具体原因应该是我urlopen那的头被 jingz
11 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python爬虫有部分数据为空值怎么办

Python爬虫遇到有部分数据空值,如何将其占位呢? 网页部分源代码: ![图片说明](https://img-ask.csdn.net/upload/201912/03/1575353292_456188.jpg) 因为我的数据爬取,最后呈现为表格形式,格式处理如下图 ``` for i in range(int(len(yearList)/5)): yearData.append((yearList[5*i],yearList[5*i+1],yearList[5*i+2],yearList[5*i+3],yearList[5*i+4])) ``` 因为以上存在空值,导致最后的数据错位: ![图片说明](https://img-ask.csdn.net/upload/201912/03/1575353430_13453.png) 爬取部分代码见下方: ``` monthHtml = driver.find_element_by_class_name('lishitable') monthList=monthHtml.text.split('\n',-1) ``` 请问应该如何修改代码?

python网络爬虫遇到空值如何处理

爬取58同城招聘信息是xpath遇到空值。无法继续爬取。 ``` import requests #导入requests库 from lxml import etree#导入lxml库 import csv#输出文件类型 import time#时间函数 def spider(): headers = { 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.80 Safari/537.36'}#定义头部 pre_url = 'https://hc.58.com/job/pn'#构造URL for x in range(1,2):#使用for循环构造前几页URL地址并GET请求 html=requests.get(pre_url+str(x),headers=headers) time.sleep(2)#休眠时间 selector = etree.HTML(html.text)#初始化etree job_list = selector.xpath("//*[@id='list_con']/li")#获取工作列表 for job in job_list: dizhi = job.xpath("div[1]/div[1]/a/span[1]/text()")[0]#公司地址 gongsi = job.xpath("div[2]/div[1]/a/text()")[0]#公司名称 gangwei = job.xpath("div[2]/p/span[1]/text()")[0]#所需岗位 leixing = job.xpath("div[1]/div[1]/a/span[2]/text()")[0]#人员类型 xueli = job.xpath("div[2]/p/span[2]/text()")[0]#员工学历 jingyan = job.xpath("div[2]/p/span[3]/text()")[0]#员工经验 gongzi = job.xpath("div[1]/p/text()")[0]#员工工资 daiyu = job.xpath("div[1]/div[2]/text()")[0]#福利待遇 item = [dizhi, gongsi, gangwei,leixing, xueli, jingyan, gongzi,daiyu ] #所要爬取的数据 data_writer(item)#保存数据 print('正在抓取', dizhi) def data_writer(item): with open('581河池.csv', 'a',encoding='utf-8',newline='') as csvfile: writer = csv.writer(csvfile) writer.writerow(item) if __name__ == '__main__':#主函数 spider() ``` ![图片说明](https://img-ask.csdn.net/upload/201907/07/1562462726_523125.png)![图片说明](https://img-ask.csdn.net/upload/201907/07/1562462735_260881.png)

python beautifulsoup find_all方法返回空列表

网页代码如下: ![图片说明](https://img-ask.csdn.net/upload/201710/12/1507790902_64154.png) 我的python代码: cards2 = soup.find_all('div',class_='product ') class的属性值我是复制粘贴过来的,find其他的div上没有问题,可是就是这个总是给我返回空列表 ![图片说明](https://img-ask.csdn.net/upload/201710/12/1507790921_470557.png) 网址为:https://list.tmall.com/search_product.htm?q=%CA%D6%BB%FA 请大神们帮忙看看是怎么回事

Python Beautifulsoup find()通过设查找text关键字返回空值,是不是编码问题,还是其他问题?

Beautifulsoup find(text=xx)查找关键字返回空值,是不是编码问题,还是其他问题? 有网友说是编码问题的帖子:https://blog.csdn.net/sc_lilei/article/details/78764360 但是没有成功。 代码如下: ``` headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36", 'Cookie': "" } t = requests.get(url='http://www.piao88.com/ticket/3059.html', headers=headers).text t.encoding = 'utf-8' soup = BeautifulSoup(t, "lxml") u = '周杰伦' f = soup.find_all(text=u) print(f) ```

python爬虫:为什么用requests可以爬到数据,用scrapy爬到数据为空?

"http://detail.zol.com.cn/index.php?c=SearchList&keyword=%C8%FD%D0%C7&page=1" 用requests可以爬到数据,scrapy爬的状态码是200,但响应没有数据,什么原因?

Python爬虫爬取网页源代码为空,求问原因&解决方案(向)

代码如下: import urllib import urllib2 import re url ='http://www.yingjiesheng.com/guangzhou-moreptjob-2.html' req = urllib2.Request(url) try: html = urllib2.urlopen(req).read() print html except urllib2.HTTPError, e: print 'The server couldn\'t fulfill the request.' print 'Error code: ', e.code except urllib2.URLError, e: print 'We failed to reach a server.' print 'Reason: ', e.reason else: print 'No exception was raised.' 代码结果如下: ![图片说明](https://img-ask.csdn.net/upload/201508/11/1439268527_619604.png) 求:在爬取网页源代码的时候返回空的原因及解决方案(或解决方向)~求大神指点迷津啊! (PS:在处理这个问题的时候,我曾在IDLE上直接敲这段代码运行,有时候可以返回源代码有时候不可以,另外,有时候我把程序运行了几十遍之后,就能返回源代码,这时候我把url的数字2改为3时(即相当下一页),又不可以了,好诡异~~)

scrapy 爬虫大量链接返回None不知道为啥

![图片说明](https://img-ask.csdn.net/upload/202005/29/1590734722_56710.png) 学习爬虫过程中遇到上述问题,如上图,有部分链接直接None,不知道什么原因,有哪位大佬知道原因吗

python matplotlib 画两条折线图 其中一组数据有空值 如何处理?

python matplotlib 画两条折线图 其中一组数据有空值 如何处理? import csv from datetime import datetime from matplotlib import pyplot as plt filename = 'data.csv' with open(filename) as f: reader = csv.reader(f) header_row = next(reader) dates = [] temp1 = [] temp2 = [] for row in reader: time = row[1] + '-' + row[2] + '-' + row[3] current_date = datetime.strptime(time, "%Y-%m-%d") dates.append(current_date) tempm1 = int(float(row[7])) temp1.append(tempm1) tempm2 = int(row[28]) temp2.append(tempm2) fig = plt.figure(dpi=128, figsize=(10,6)) plt.plot(dates, temp1, c='red') plt.plot(dates, temp2, c='blue') plt.show() 报错: C:\Users\yo\AppData\Local\Programs\Python\Python37\python.exe F:/论文/data/compare/compare.py Traceback (most recent call last): File "F:/论文/data/compare/compare.py", line 26, in <module> tempm2 = int(row[28]) ValueError: invalid literal for int() with base 10: '20.075' Process finished with exit code 1 试过if 不为空值处理,然后数据对不齐了 我想要如果是空值图上就不显示 数据是有小数的所以就用int float 处理 请各位大神帮忙 谢谢!

python网页爬取信息,多个正则表达式爬取,结果出现有一个空值

import requests import re #请求头 header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'} #需要爬取的网页 url = 'http://www.114best.com/tel/' #爬取网页信息 resp_url = requests.get(url,headers=header).content.decode().replace('\n','').replace('\t','').replace(' ','').replace('\r','') print(resp_url) #清洗 pat1 =r'<tr><td><ahref="/tel/[\s\S]*?/">(.*?)</a></td><td>[\s\S]*?</td></tr>|<tr><td>(.*?)</td><td>[\s\S]*?</td></tr>' pat = re.compile(pat1,re.S) resp_pat1 =pat.findall(resp_url) print(resp_pat1) ![图片说明](https://img-ask.csdn.net/upload/201905/28/1559015017_543646.png)

python在post请求下爬取数据,返回的值为什么为空?

本人小白,尝试爬杭州市二手房挂牌信息, 网址:http://jjhygl.hzfc.gov.cn/webty/gpfy/gpfySelectlist.jsp, 代码如下 ``` import requests url = 'http://jjhygl.hzfc.gov.cn/webty/WebFyAction_getGpxxSelectList.jspx' data = {'page': 1} headers = {'Host': 'jjhygl.hzfc.gov.cn', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0', 'Accept': 'text/html, */*; q=0.01', 'Accept-Language': 'en-US,en;q=0.5', 'Accept-Encoding': 'gzip, deflate', 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 'X-Requested-With': 'XMLHttpRequest', 'Content-Length': '311', 'Connection': 'keep-alive', 'Referer': 'http://jjhygl.hzfc.gov.cn/webty/gpfy/gpfySelectlist.jsp', 'Cookie': 'ROUTEID=.lb6; JSESSIONID=2E78A1FE8DBC80F1CEEE20264BE96B1F.lb6; Hm_lvt_70e93e4ca4be30a221d21f76bb9dbdfa=1559115557; Hm_lpvt_70e93e4ca4be30a221d21f76bb9dbdfa=1559115557', 'Pragma': 'no-cache', 'Cache-Control': 'no-cache'} r = requests.post(url, data =data, headers = headers) r.content r.text ``` 返回结果是 ``` b'{"list":[],"pageinfo":"\xe6\x9a\x82\xe6\x97\xa0\xe6\x95\xb0\xe6\x8d\xae"}' '{"list":[],"pageinfo":"暂无数据"}' ``` ![图片说明](https://img-ask.csdn.net/upload/201905/29/1559122181_853820.png) 请问怎么才能得到图中的信息?

爬虫爬取1688返回response成功但是内容为空?

今天尝试写了一个爬取1688商品页的爬虫,发现1688的代码已经不同于几年前了,前台的页面html代码居然是通过js请求返回json数据中的值解析而来,整个动态加载的html被全部封装。在网页前台浏览的时候也能明显感觉到,整个商品页不是全部一次加载完成,随着鼠标的下滑进行动态加载,直至翻页出现。找了一下网上的爬取代码,不是代码太旧就是使用selenium,因此我尝试从解析js角度来看看能否爬到数据。 我搜索的关键词为:大理石餐盘,访问的url为:https://s.1688.com/selloffer/offer_search.htm?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&n=y&netType=1%2C11&spm=a260k.635.3262836.d102 通过抓包可以发现实际上每个页面的动态加载通过如下的js文件加载: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530583_824631.png) 同时可以看到头部信息为: ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552530839_105546.jpg) 因此我编写了代码来请求此url,想要获取其中的数据 通过分析url,我发现其实只有几个关键的参数在发生作用,我修改了url如下: https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true 将比较关键的参数罗列:keywords,beginpage ,startindex(本页中以0.20.40循环),templateconfigname,async,enableasync 从页面请求的结果如下 https://s.1688.com/selloffer/rpc_async_render.jsonp?keywords=%B4%F3%C0%ED%CA%AF%B2%CD%C5%CC&beginPage=2&startIndex=40&templateConfigName=marketOfferresult&async=true&enableAsync=true ![图片说明](https://img-ask.csdn.net/upload/201903/14/1552531339_315690.jpg) 依据上面的分析我编写了代码: ``` ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true' } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` ``` 其中请求头是参照抓包的请求头进行了伪装,user_agent使用了随机代理池中的代理。 ip应用了代理池中的代理进行切换, 测试代码发现虽然返回成功,但是内容为空: 测试代码的结果如下: ``` ``` 正在爬取第1页_ ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":"" }, "beaconP4Pid":"1552531611011186199615", "tracerId":"1191031861991552531610953000954", "end":0 } }) ``` 很明显服务器判断出来我是机器人,我检查了一下cookies还有ip以及header都没有问题 使用同样的参数在浏览器页面请求也能访问正常的结果,因此我决定增加更多的参数,也许是因为服务器 端验证会检测某个参数是否存在来判断请求来自机器人还是真正的用户,我将代码修改如下: ``` def get_one_page(page): ''' 得到单页商品信息 ''' try: print('正在爬取第%d页' % page) for startindex in range(0, 2): proxy = get_proxy() url = 'https://s.1688.com/selloffer/rpc_async_render.jsonp' data = { 'keywords': KEYWORD, # 搜索关键词, 'beginpage': str(page), # 页数 'templateConfigName': TemplateConfigName, 'startIndex': str(startindex*20), 'async': 'true', 'enableAsync': 'true', 'rpcflag': 'new', '_pageName_': 'market', 'offset': str(9), 'pageSize': str(60), 'asyncCount': str(20), 'n': 'y', 'netType': '1%2C11', 'uniqfield': 'pic_tag_id', 'qrwRedirectEnabled': 'false', 'filterP4pIds': '550656542618%2C554434844511%2C574540124248%2C568185683625%2C567623615791%2C536778930216%2C577066747130%2C555894336804', 'leftP4PIds': '', 'pageOffset': str(3) } headers = { 'User_Agent': random.choice(USER_AGENT), 'Referer':'https://s.1688.com/selloffer/offer_search.htm?keywords=' + quote( KEYWORD) + '&n=y&netType=1%2C11&spm=a260k.635.3262836.d102&offset=9&filterP4pIds=580281266813,551252714239,554311584303,554434844511,576452898982,567623615791,1264995609,584747673985', 'Cookie': COOKIE, } proxies = {"http": "http://{}".format(proxy)} response = requests.get(url=url, headers=headers, params=data, proxies=proxies, timeout=5) time.sleep(1) if response.status_code == 200: print(response.text) data = response.json() get_info(data=data) except Exception as e: print(e.args) print('出现异常,重新爬取第%d页' % page) return get_one_page(page) ``` 测试的结果如下: ``` 正在爬取第1页 ({ "hasError":false, "message":"success", "content":{ "offerResult":{ "html":" \n \n <!-- 为打点计算 offerindex 值-->\n \n \n <!-- 用于异步请求 -->\n \n\n <div id=\"sm-maindata-script\">\n <script type=\"text\/javascript\">\n var coaseParam = {\n \'isCoaseOut\':true\n };\n <\/script>\n <script type=\"text\/javascript\">\n var rightP4P = {\n industryTagPath:\'\',\n leftP4PId:\'\',\n leftP4PLoginId:\'\',\n biaowangId:\'\'\n };\n var rightP4Poffer =[\n ];\n<\/script>\n <\/div>\n \n\n" }, "beaconP4Pid":"1552532048109186199394", "tracerId":"1191031861991552532048084000548", "end":0 } }) ``` 很遗憾结果并不理想,仍旧没有办法获得真正的数据。 我分析了还没有被我列进去的参数,因为无法寻找到其规律所以就没有加上去。 难道1688现在已经做到了,机器人无法爬的地步了吗,到底应该如何解决呢。有没有大神能够指点一下: 另外我同样的测试了一下1688的热销市场,同样的方式,没有问题可以爬取到js的内容,只不过数据是直接封装在json返回值中的,不是通过html代码二次封装。

请问python如何读取csv文件某列时保留空值?

抓了一个csv文件,用role=data['Gender']抓出所有性别并画饼图。Gender列明明有很多空值但是画出来的图只有男女两项,请问如何保留空值并一起画在图中?

如何在python中调用sqlite3查询某数据为空值时返回指定数据?

例如我有一数据库,内有表“Hyper”,表内有两列,分别是“姓名”和“年龄”。 假设利用like查询姓名列,返回对应年龄列。如果输入的姓名在表内没有数据,怎样才能让表返回指定值的年龄? 目前找到的语句有 ```if NAME = [] or NAME = NONE: AGE = ('99') else: AGE = (AGE) ``` 但是似乎没法正常使用呢......

python return返回的值为什么总是None

请问下这段代码中,不论把return更换为return 123、return num、return "h"等等,最后打印出的结果都不受return影响,return返回的值总是None ``` def sum_number(num): print(num) if num == 1: return # return 123 # return num # return "h" sum_number(num - 1) print(sum_number(3)) ``` ``` def sum_number(num): print(num) if num == 1: return 123 sum_number(num - 1) print(sum_number(3)) ``` ``` def sum_number(num): print(num) if num == 1: return "h" sum_number(num - 1) print(sum_number(3)) ``` ``` def sum_number(num): print(num) if num == 1: return num sum_number(num - 1) print(sum_number(3)) ``` 最后的打印结果都是: ``` 3 2 1 None ``` 是我在对比另一段代码: ``` def sum_numbers(num): if num == 1: return 1 temp = sum_numbers(num - 1) return num + temp result = sum_numbers(100) print(result) ``` 结果: ``` 5050 ``` 产生的疑问

求大神解答python中find_element_by_xpath返回的是什么形式,或者说是啥如图,能不能逆向转换成实际地址?

结果如下,而且也实现不了click()方法<selenium.webdriver.remote.webelement.WebElement (session="55ae7147fbcb1e233093fd7abefaf654", element="aec3ddef-d507-42ff-9a61-3e5008a8785e")> ![图片说明](https://img-ask.csdn.net/upload/202003/10/1583816879_318802.png) 求大神解答

Python split()去掉空字符串问题

``` b = "123,1,23," c = b.split(',') ``` c其实是包括有4个元素的 ``` print(len(c)) ``` 用上面那个函数就知道了 但是这样包含了那个空格,所以想问下这个 大家有没有方法去掉那个空格 我知道在QT上可以设置下那个模式可以做到,但是python上我看了好像是不行 想了解下在Python上有没有直接做分割的时候就把那个空字符去掉的手段 知道可以用循环做,或者是再生成一个新表。 大家可以发表下,自己以前遇到过类似的解决方案么? [就是一个兴趣讨论问题,就没有设置那个C币,望不要介意]

java爬虫 httpcleaner解析页面结果为什么老是空?

![图片说明](https://img-ask.csdn.net/upload/201703/10/1489110834_874330.png) 如图是httpclean下载页面信息后把页面传给httpcleaner,然后evaluateXPath总是为空,我就纳闷了,为什么?是Xpath不正确的原因吗?还是什么原因呢?

爬取股票信息,python没报错但不能爬取出结果!急求大神啊!!???

``` # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import traceback import re import time import requests def GetHTMLSource(url): try: r=requests.get(url) r.raise_for_status () r.encoding = r.apparent_encoding return r.text except: print ( "异常" ) return "" def SetFileName(): dirname = time.strftime ( '%Y%m%d' , time.localtime ( time.time () ) ) #获取当前日期 dirname += 'sh' return dirname def getStockList(lst , stock_list_url): # 获得东方财富网上以sh6开头的股票代码 html = GetHTMLSource ( stock_list_url ) soupdata = BeautifulSoup ( html , 'html.parser' ) a = soupdata.find_all ( 'a' ) # 用find_all方法遍历所有'a'标签,并取出在'a'标签里面的’href’数据 for i in a: try: href = i.attrs[ 'href' ] lst.append ( re.findall ( r"sh6d{5}" , href )[ 0 ] ) except: continue def getStockInfo(lst , stock_info_url , fpath): ndate = time.strftime ( '%Y%m%d' , time.localtime ( time.time () ) ) for stock in lst: url = stock_info_url + stock + '.html' html = GetHTMLSource ( url ) try: if html == "": continue infoDict = {} soup = BeautifulSoup ( html, 'html.parser' ) stockInfo = soup.find ( 'div' , attrs={'class': 'stock-bets'} ) if stockInfo == None: continue keyData = stockInfo.find_all ( 'dt' ) valueData = stockInfo.find_all ( 'dd' ) inp = stock + "," + ndate + "," for i in range ( len ( keyData ) ): key = keyData[ i ].text val = valueData[ i ].text infoDict[ key ] = val inp += infoDict[ '最高' ] + "," + infoDict[ '换手率' ] + "," + infoDict[ '成交量' ] + "," + infoDict[ '成交额' ] + "" with open ( fpath , 'a' , encoding='utf-8' ) as f: f.write ( inp ) except: traceback.print_exc () continue def main(): stock_list_url = 'http://quote.eastmoney.com/stocklist.html' stock_info_url = 'https://gupiao.baidu.com/stock/' output_file = 'D://a.txt' slist = [] getStockList(slist,stock_list_url) getStockInfo(slist,stock_info_url,output_file) main() ```

python数据处理时遇到如下问题

import pandas as pd import numpy as np import matplotlib.pyplot as plt import csv import fileinput import time pd.options.display.max_columns=None start = time.time() data=pd.read_csv('C:\\Users\\丹心傲雪\\Desktop\\毕业论文冲鸭\\1001-CD\\1001-CD.txt') #The path of data file data.columns=['carid','orderid','time','longitude','latitude'] #添加列标签 orderid_list=np.array(data['orderid'].drop_duplicates()) #订单号列表 columns=['carid','orderid','starttime','endtime','longitude','latitude'] data_bak = pd.DataFrame(columns=columns) append_dic = {} data_end_time = [] for i in range(len(orderid_list)): order=data[data['orderid']==orderid_list[i]]#根据订单号筛选数据 order.sort_values("time",inplace=True) #对同一订单的时间进行排序 order=np.array(order) #将df转为array for j in range(len(order[0])): append_dic[columns[j]] = order[0][j] append_dic['endtime'] = order[-1][2] data_bak = data_bak.append([append_dic],ignore_index=True) data_bak.to_csv('data.csv',index=False) end = time.time() print("运行时间:%.2f秒"%(end-start)) ``` ```

程序员的兼职技能课

程序员的兼职技能课

为linux系统设计一个简单的二级文件系统

实验目的: 通过一个简单多用户文件系统的设计,加深理解文件系统的内部功能及内部实现。 实验要求: 为linux系统设计一个简单的二级文件系统。要求做到以下几点: (1)可以实现下列几条命令(至少4条)

CCNA+HCNA+wireshark抓包综合网工技能提升套餐

本套餐包含思科路由交换CCNA,部分CCNP核心,华为HCNA以及wireshark抓包等类容,旨在培养具有综合能力的网络工程师。

董付国老师Python全栈学习优惠套餐

购买套餐的朋友可以关注微信公众号“Python小屋”,上传付款截图,然后领取董老师任意图书1本。

成年人用得到的6款资源网站!各个都是宝藏,绝对让你大饱眼福!

不管是学习还是工作,我们都需要一些资源帮助我们有效地解决实际问题。 很多人找资源只知道上百度,但是你们知道吗,有的资源是百度也搜索不出来的,那么今天小编就给大家介绍几款好用的资源网站,大家赶紧收入囊中吧! 1.网盘007 https://wangpan007.com/ 一款全能的资源搜索网站!只需要输入关键字,就能获得你想要的视频、音乐、压缩包等各种资源,网上...

矿车轴载荷计算方法的比较及选用

针对矿车轴的弯曲损坏,分析了固定式矿车车轴的受力,并对力叠加法以及当量负荷法2种计算方法进行了分析和比较,认为应采用当量负荷法进行车轴的设计计算。

Python数据清洗实战入门

Python数据清洗实战入门

C/C++跨平台研发从基础到高阶实战系列套餐

一 专题从基础的C语言核心到c++ 和stl完成基础强化; 二 再到数据结构,设计模式完成专业计算机技能强化; 三 通过跨平台网络编程,linux编程,qt界面编程,mfc编程,windows编程,c++与lua联合编程来完成应用强化 四 最后通过基于ffmpeg的音视频播放器,直播推流,屏幕录像,

Polar编码matlab程序

matlab实现的Polar codes源程序

2019全国大学生数学建模竞赛C题原版优秀论文

2019全国大学生数学建模竞赛C题原版优秀论文,PDF原版论文,不是图片合成的,是可编辑的文字版。共三篇。 C044.pdf C137.pdf C308.pdf

Linux常用命令大全(非常全!!!)

Linux常用命令大全(非常全!!!) 最近都在和Linux打交道,感觉还不错。我觉得Linux相比windows比较麻烦的就是很多东西都要用命令来控制,当然,这也是很多人喜欢linux的原因,比较短小但却功能强大。我将我了解到的命令列举一下,仅供大家参考: 系统信息 arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 uname -r 显示正在使用的内核版本 d...

Linux下聊天室实现(基于C)

在linux下的基于TCP/IP,采用socket通信的聊天室,实现进入聊天室,进行多人群聊,指定人进行私聊,群主管理员功能,颗进行禁言,提出群聊等操作。个人账号可修改昵称或者修改密码,还可进行找回密

一个较完整的Qt用户登录界面设计

一个较完整的Qt用户登录界面,稍微移植可用,用sqlite数据库存储用户名和密码,具有增加和删除用户的功能,开发环境为ubuntu16.04+Qt5.6.1,win7下程序也编译可用。贡献出来,共同学

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

【C语言】贪吃蛇游戏代码(Visual C++6.0实现)

本游戏代码参考《C语言项目开发全程实录(第二版)》第六章。代码已在Visual C++6.0环境下编译测试通过,可在VC++6.0编译器中导入工程编译运行查看效果,或者也可以直接运行Release或D

Android小项目——新闻APP(源码)

Android小项目——新闻APP(源码),一个很简单的可以练手的Android Demo Ps:下载之前可以先看一下这篇文章——https://blog.csdn.net/qq_34149526/a

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

网络工程师小白入门--【思科CCNA、华为HCNA等网络工程师认证】

Android音视频开发全套

Android平台音视频开发全套,涉及:FFmpeg软解码解码、Mediacodec硬解码编码、Openssl音频播放、OpenGL ES视频渲染、RTMP推流等核心重要知识点。

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

2019 Python开发者日-培训

2019 Python开发者日-培训

2019 AI开发者大会

2019 AI开发者大会

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

因为看了这些书,我大二就拿了华为Offer

四年了,四年,你知道大学这四年我怎么过的么?

Python可以这样学(第四季:数据分析与科学计算可视化)

Python可以这样学(第四季:数据分析与科学计算可视化)

我说我不会算法,阿里把我挂了。

不说了,字节跳动也反手把我挂了。

技术大佬:我去,你写的 switch 语句也太老土了吧

昨天早上通过远程的方式 review 了两名新来同事的代码,大部分代码都写得很漂亮,严谨的同时注释也很到位,这令我非常满意。但当我看到他们当中有一个人写的 switch 语句时,还是忍不住破口大骂:“我擦,小王,你丫写的 switch 语句也太老土了吧!” 来看看小王写的代码吧,看完不要骂我装逼啊。 private static String createPlayer(PlayerTypes p...

YOLOv3目标检测实战系列课程

《YOLOv3目标检测实战系列课程》旨在帮助大家掌握YOLOv3目标检测的训练、原理、源码与网络模型改进方法。 本课程的YOLOv3使用原作darknet(c语言编写),在Ubuntu系统上做项目演示。 本系列课程包括三门课: (1)《YOLOv3目标检测实战:训练自己的数据集》 包括:安装darknet、给自己的数据集打标签、整理自己的数据集、修改配置文件、训练自己的数据集、测试训练出的网络模型、性能统计(mAP计算和画出PR曲线)和先验框聚类。 (2)《YOLOv3目标检测:原理与源码解析》讲解YOLOv1、YOLOv2、YOLOv3的原理、程序流程并解析各层的源码。 (3)《YOLOv3目标检测:网络模型改进方法》讲解YOLOv3的改进方法,包括改进1:不显示指定类别目标的方法 (增加功能) ;改进2:合并BN层到卷积层 (加快推理速度) ; 改进3:使用GIoU指标和损失函数 (提高检测精度) ;改进4:tiny YOLOv3 (简化网络模型)并介绍 AlexeyAB/darknet项目。

DirectX修复工具V4.0增强版

DirectX修复工具(DirectX Repair)是一款系统级工具软件,简便易用。本程序为绿色版,无需安装,可直接运行。 本程序的主要功能是检测当前系统的DirectX状态,如果发现异常则进行修复

C++语言基础视频教程

C++语言基础视频教程

相关热词 c#跨线程停止timer c#批量写入sql数据库 c# 自动安装浏览器 c#语言基础考试题 c# 偏移量打印是什么 c# 绘制曲线图 c#框体中的退出函数 c# 按钮透明背景 c# idl 混编出错 c#在位置0处没有任何行
立即提问