爬虫BeautifulSoup的find().find_all()可以连起来用吗?
soup = bs(text, 'lxml')
job_list = soup.find(name='div', class_='job-list').find_all(name='li')

报错 AttributeError: 'NoneType' object has no attribute 'find_all'

网上下载了一份代码 运行这儿报错

应该怎么改正?

1个回答

需要一步步排查,你的完整代码呢?

weixin_44831720
weixin_44831720 完整代码太多了 报错就是这儿报错的。我查了一下 ,没有发现find().find_all()一起使用的情况
3 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python 爬虫 find_all 发现多条数据,如何批量提取其中的数据,tag.text不可以提取列表

import requests from bs4 import BeautifulSoup res=requests.get('https://wordpress-edu-3autumn.localprod.oc.forchange.cn/all-about-the-future_04/comment-page-1/#comments') html=res.text items=BeautifulSoup(html,'html.parser') items1=items.find_all(id="comments") for item in items1: head=item.find_all(class_="comments-title") name=item.find_all(class_="fn") say=item.find_all(class_="says") date=item.find_all('time') content=item.find_all('p') print(head.text,'\n') print(name.text,'\n') print(say.text,'\n') print(date.text,'\n') print(content.text,'\n')

Python BeautifulSoup find_all 问题

用python爬下一个网页,将其弄成BeautifulSoup Object之后, 1. ptint bsObj 可以输出中文内容 2. print bsObj.find__all之后,输出的是unicode编码的内容,请问该怎么处理呢?_

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 请大神们帮忙看看是怎么回事

s = soup.find_all('div', class_="jsx-742282485 stat row")返回空列表

![图片说明](https://img-ask.csdn.net/upload/202003/30/1585536097_807390.jpg) 在某网站上爬取美国各州疫情人数,提取总人数是成功的,但是执行标题那步的时候,find_all返回空列表[](https://coronavirus.1point3acres.com/?code=001XKpTM0fAHk92cYwUM0iSrTM0XKpTF ""),求大神指点问题出在哪里啊

beautifulsoup爬虫问题

我想run这个出来两个list都是空的,想把工作名和地点弄下来,求解答怎么结局 import requests from bs4 import BeautifulSoup url = "https://search.51job.com/list/000000,000000,0000,00,9,99,Java%2520%25E5%25BC%2580%25E5%258F%2591,2,1.html?" res = requests.get(url) print(res) res.encoding = "gbk" soup = BeautifulSoup(res.text) position_tag = soup.find_all("p",class_="t1") print(position_tag) place_tag = soup.find_all('span',class_='t3') print(place_tag)

Python爬虫soup.findAll("li", {"class": "result"})为空

``` 大家好~ 我之前写的爬虫是单独针对某个页面的,比如新浪微博。这次需要在全网范围查询关于“开灯”有关的句子或文章,但是soup.findall("li",{"class":"result"})的结果一直是空。求助,谢谢。 PS:网上参考其他的例子,也都是在这个地方出问题,空的。。。 代码如下: #-*-coding:utf-8-*- __author__ = 'Daniel' #python3.5 #'爬取关于开灯的新闻' import re import urllib import chardet from bs4 import BeautifulSoup def remove_js_css(content): r = re.compile(r'''<scrip.*?</scrip>''', re.I|re.M|re.S) s = r.sub('', content) r = re.compile(r'''<style.*?</style>''', re.I|re.M|re.S) s = r.sub('', s) r = re.compile(r'''<!--.*?-->''', re.I|re.M|re.S) s = r.sub('', s) r = re.compile(r'''<meta.*?>''', re.I|re.M|re.S) s = r.sub('', s) r = re.compile(r'''<ins.*?</ins>''', re.I|re.M|re.S) s = r.sub('', s) return s def remove_empty_line(content): r = re.compile(r'''^\s+$''', re.M|re.S) s = r.sub('', content) r = re.compile(r'''\n+''', re.M|re.S) s = r.sub('\n', s) return s def remove_any_tag(s): s = re.sub(r'''<[^>]+>''', '', s) return s.strip() def remove_any_tag_but_a(s): text = re.findall(r'''<a[^r][^>]*>(.*?)</a>''', s, re.I|re.S|re.S) text_b = remove_any_tag(s) return len(''.join(text)), len(text_b) def remove_image(s, n=50): image = 'a' * n r = re.compile(r'''<img.*?>''', re.I|re.M|re.S) s = r.sub(image, s) return s def remove_video(s, n=1000): video = 'a' * n r = re.compile(r'''<embed.*?>''', re.I|re.M|re.S) s = r.sub(video, s) return s def sum_max(values): cur_max = values[0] glo_max = -99999 left, right = 0, 0 for index, value in enumerate(values): cur_max += value if(cur_max > glo_max): glo_max = cur_max right = index elif(cur_max < 0): cur_max = 0 for i in range(right, -1, -1): glo_max -= values[i] if abs(glo_max < 0.0001): left = i break return left, right + 1 def method_1(content, k = 1): if not content: return None, None, None, None tmp = content.split('\n') group_value = [] for i in range(0, len(tmp), k): group = '\n'.join(tmp[i:i+k]) group = remove_image(group) group = remove_video(group) text_a, text_b = remove_any_tag_but_a(group) temp = (text_b - text_a) - 8 group_value.append(tmp) left, right = sum_max(group_value) return left, right, len('\n'.join(tmp[:left])), len('\n'.join(tmp[:right])) def extract(content): content = remove_empty_line(remove_js_css(content)) left, right, x, y = method_1(content) return '\n'.join(content.split('\n')[left:right]) #输入url,将其新闻页的正文输入txt def extract_news_content(web_url, file_name): request = urllib.Request(web_url) #在请求加上头信息,伪装成浏览器访问 request.add_header('User-Agent','Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6') opener = urllib.build_opener() html = opener.open(request).read() infoencode = chardet.detect(html)['encoding']##通过第3方模块来自动提取网页的编码 if html != None and infoencode != None:#提取内容不为空,error.或者用else html = html.decode(infoencode, 'ignore') soup = BeautifulSoup(html) content = soup.renderContents() content_text = extract(content)#提取新闻网页中的正文部分,化为无换行的一段文字 content_text = re.sub("&nbsp;"," ",content_text) content_text = re.sub("&gt;","",content_text) content_text = re.sub("&quot;",'""',content_text) content_text = re.sub("<[^>]+>","",content_text) content_text = re.sub("\n","",content_text) file = open(file_name,'a')#append file.write(content_text) file.close() #抓取百度新闻搜索结果:中文搜索,前10页,url:key=关键词 def search(key_word): search_url = 'http://news.baidu.com/ns?word=key_word&tn=news&from=news&cl=2&rn=20&ct=1' req = urllib.request.urlopen(search_url.replace('key_word', key_word)) real_visited = 0 for count in range(10):#前10页 html = req.read() soup = BeautifulSoup(html) content = soup.findAll("li", {"class": "result"}) #resultset object num = len(content) for i in range(num): #先解析出来所有新闻的标题、来源、时间、url p_str = content[i].find('a') #if no result then nontype object contenttitle = p_str.renderContents() contenttitle = contenttitle.decode('utf-8', 'ignore')#need it contenttitle = re.sub("<[^>]+>", "", contenttitle) contentlink = str(p_str.get("href")) #存放顺利抓取的url,对比 visited_url = open(r'visited-cn.txt', 'r')#是否已经爬过 visited_url_list = visited_url.readlines() visited_url.close()#及时close exist = 0 for item in visited_url_list: if contentlink == item: exist = 1 if exist != 1:#如果未被访问url p_str2 = content[i].find('p').renderContents() contentauthor = p_str2[:p_str2.find("&nbsp;&nbsp")]#来源 contentauthor = contentauthor.decode('utf-8', 'ignore')#时 contenttime = p_str2[p_str2.find("&nbsp;&nbsp") + len("&nbsp;&nbsp") + 1:] contenttime = contenttime.decode('utf-8', 'ignore') #第i篇新闻,filename="D:\\Python27\\newscn\\%d.txt"%(i) #file = open(filename,'w'),一个txt一篇新闻 real_visited += 1 file_name = r"newscn\%d.txt"%(real_visited) file = open(file_name,'w') file.write(contenttitle.encode('utf-8')) file.write(u'\n') file.write(contentauthor.encode('utf-8')) file.write(u'\n') file.write(contenttime.encode('utf-8')) file.write(u'\n'+contentlink+u'\n') file.close() extract_news_content(contentlink, file_name)#还写入文件 visited_url_list.append(contentlink)#访问之 visited_url = open(r'visited-cn.txt', 'a')#标记为已访问,永久存防止程序停止后丢失 visited_url.write(contentlink+u'\n') visited_url.close() if len(visited_url_list) >= 120: break #解析下一页 if count == 0: next_num = 0 else: next_num = 1 next_page = 'http://news.baidu.com' + soup('a',{'href':True,'class':'n'})[next_num]['href'] # search for the next page#翻页 print(next_page) req = urllib.urlopen(next_page) if __name__=='__main__': #key_word = input('input key word:') key_word = 'helloworld' search(key_word) ```

Python用BeautifulSoup里的get_text(),为什么不能输出"女间谍"

*才学python爬虫(python3.4),如何输出里面的"女间谍"呢?求教* ```python htmll ='''<a class="nbg" href="http://movie.douban.com/subject/25752261/" title="女间谍"> <img alt="女间谍" class="" src="http://img4.douban.com/view/movie_poster_cover/ipst/public/p2254455238.jpg"/> </a>''' from bs4 import BeautifulSoup soup = BeautifulSoup(htmll) print(soup.a.img.get_text()) #输出结果为空 ```

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()_是我为验证结果打的。

python中的BeautifulSoup用.contents获取子标签

.contents说明文档中解释是list,我用soup.thead.tr.contents获取后的值为: l = [<th>时间</th>,<th>指标名称</th>] 当我读取它时好像执行的是pop操作这是为什么 rst = BeautifulSoup() rst.append(l[1]) print(len(l)) 输出为1,少了一个

beautifulsoup 爬虫问题

from bs4 import BeautifulSoup from selenium import webdriver import urllib2 import time driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.zillow.com/homes/recently_sold/Culver-City-CA/house,condo,apartment_duplex,townhouse_type/20432063_zpid/51617_rid/12m_days/globalrelevanceex_sort/34.048605,-118.340178,33.963223,-118.47785_rect/12_zm/") time.sleep(3) driver.find_element_by_class_name("collapsible-header").click() soup = BeautifulSoup(driver.page_source) region = soup.find("div",{"id":"hdp-price-history"}) table = region.find('table',{'class':'zsg-table yui3-toggle-content-minimized'}) print table 需要price/Tax history 的table但是这样通过class和id定位的结果是None,找不出问题在哪里了,请问如何解决

[python]BeautifulSoup4爬虫解析网页中data-*标签的问题

![图片说明](https://img-ask.csdn.net/upload/201705/17/1495004162_275999.png) 我想要解析出图中的链接,通过先识别 li 定位。可是查看soup的文本,所有data-\* 都没有解析出来 代码如下 ``` keywords = input('输入关键词PLZ') res = requests.get('https://www.bing.com/search?q='+str(keywords)+'&qs=n&form=QBLH&scope=web&sp=-1&pq=abc&sc=8-5&sk=&cvid=3FE7B447AE744DD1AF25B5919EE1B675') try: res.raise_for_status() except Exception as ecp: print('There is an Exception:',ecp) soup = bs4.BeautifulSoup(res.text,'html.parser') ol = soup.find('ol',id='b_results') linkElement = soup.find_all(attrs={'data-bm':'7'}) ``` 结果linkElement为空

python爬虫爬取有地方出错了?

本人新手小白,在看了 慕课老师课程后写了尝试爬取静态股票信息。网站是对的,spider上也没报错。 就是没出结果,也没发现保存文档。求大佬指正。 代码如下: ``` import requests from bs4 import BeautifulSoup import traceback import re def getHTMLText(url, code="utf-8"): try: r = requests.get(url) r.raise_for_status() r.encoding = code return r.text except: return "" def getStockList(lst, stockURL): html = getHTMLText(stockURL, "GB2312") soup = BeautifulSoup(html, 'html.parser') a = soup.find_all('a') for i in a: try: href = i.attrs['href'] lst.append(re.findall(r"[s][hz]\d{6}", href)[0]) except: continue def getStockInfo(lst, stockURL, fpath): count = 0 for stock in lst: url = stockURL + stock + ".html" html = getHTMLText(url) try: if html=="": continue infoDict = {} soup = BeautifulSoup(html, 'html.parser') stockInfo = soup.find('div',attrs={'class':'stock-bets'}) name = stockInfo.find_all(attrs={'class':'bets-name'})[0] infoDict.update({'股票名称': name.text.split()[0]}) keyList = stockInfo.find_all('dt') valueList = stockInfo.find_all('dd') for i in range(len(keyList)): key = keyList[i].text val = valueList[i].text infoDict[key] = val with open(fpath, 'a', encoding='utf-8') as f: f.write( str(infoDict) + '\n' ) count = count + 1 print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="") except: count = count + 1 print("\r当前进度: {:.2f}%".format(count*100/len(lst)),end="") continue def main(): stock_list_url = 'https://quote.eastmoney.com/stock_list.html' stock_info_url = 'https://gupiao.baidu.com/stock/' output_file = 'C:/BaiduStockInfo.txt' slist=[] getStockList(slist, stock_list_url) getStockInfo(slist, stock_info_url, output_file) main() ```

python爬虫问题出错原因求助

import requests from bs4 import BeautifulSoup import bs4 def getHTMLText(url): try: r = requests.get(url, timeout=30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" def fillUnivList(ulist, html): soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: if isinstance(tr, bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string, tds[1].string, tds[3].string]) def printUnivList(ulist, num): print("{:^10}\t{:^6}\t{:^10}".format("排名","学校名称","总分")) for i in range(num): u=ulist[i] print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2])) def main(): uinfo = [] url = 'http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html' html = getHTMLText(url) fillUnivList(uinfo, html) printUnivList(uinfo, 20) # 20 univs main() 出错为:Traceback (most recent call last): File "D:/python02/01/11.py", line 34, in <module> main() File "D:/python02/01/11.py", line 33, in main printUnivList(uinfo, 20) # 20 univs File "D:/python02/01/11.py", line 26, in printUnivList print("{:^10}\t{:^6}\t{:^10}".format(u[0],u[1],u[2])) TypeError: unsupported format string passed to NoneType.__format__ 第一次爬虫,不是很能理解出错原因。求指教

python爬虫,爬取百度百科python词条页面数据,是这个页面url的抓取不到还是其他原因?

![控制台信息](https://img-ask.csdn.net/upload/201712/07/1512637235_201308.png ![爬虫调度代码SpiderMain](https://img-ask.csdn.net/upload/201712/07/1512637414_534311.png) 1.URL管理器: class UrlManager (object): def __init__(self): self.new_urls = set() self.old_urls = set() def add_new_url(self, url): if url is None: return # 如果没有新的URL则不进行添加 if url not in self.new_urls and url not in self.old_urls: self.new_urls.add(url) def add_new_urls(self, urls): if urls is None or len(urls) == 0: return for url in urls: self.add_new_url(url) def get_new_url(self): return len(self.new_urls) != 0 def has_new_url(self): new_url = self.new_urls.pop() self.old_urls.add(new_url) return new_url 2.网页下载器: import urllib.request import urllib.response class HtmlDownloader(object): def download(self, url): if url is None: return None response = urllib.request.urlopen(url) if response.getcode() != 200: return None return response.read() 3.网页解析器: # coding:utf-8 from bs4 import BeautifulSoup import re import urllib.parse class HtmlParser(object): def parser(self, page_url, html_content): if page_url is None or html_content is None: return soup = BeautifulSoup(html_content, 'html.parser', from_encoding='utf-8') new_urls = self._get_new_urls(page_url, soup) new_data = self._get_new_data(page_url, soup) return new_urls, new_data def _get_new_urls(self, page_url, soup): new_urls = set() # links = soup.find_all('a', href=re.compile(r"/item/\d+\.htm")) links = soup.find_all('a', href=re.compile(r"/item/(.*)")) for link in links: new_url = link['href'] new_full_url = urllib.parse.urljoin(page_url, new_url) new_urls.add(new_url) return new_urls def _get_new_data(self, page_url, soup): res_data = {} # url res_data['url'] = page_url # 标题<dd class="lemmaWgt-lemmaTitle-title"><h1>Python</h1><h2>(计算机程序设计语言)</h2> # 简介<div class="lemma-summary" label-module="lemmaSummary"> title_node = soup.find_all('dd', class_='lemmaWgt-lemmaTitle-title').find('h1') res_data['title'] = title_node.get_text() summary_node = soup.find_all('div', class_='lemma-summary') res_data['summmary'] = summary_node.get_text() return res_data 4.页面输出: class HtmlOutputer(object): def __init__(self): self.datas=[] def collectData(self, data): if data is None: return self.datas.append(data) def output_html(self): fout = open('output.html', 'w') fout.write("<html>") fout.write("<body>") fout.write("<table>") for data in self.datas: fout.write("<tr>") fout.write("<td>%s</td>" % (data['url']).encode('utf-8')) fout.write("<td>%s</td>" % (data['title']).encode('utf-8')) fout.write("<td>%s</td>" % (data['summary']).encode('utf-8')) fout.write("</tr>") fout.write("</table>") fout.write("</body>") fout.write("</html>") fout.close()

selenium+beautifulsoup 抓取 html table

from bs4 import BeautifulSoup from selenium import webdriver import urllib2 import time driver = webdriver.Chrome() driver.maximize_window() driver.get("https://www.zillow.com/homes/recently_sold/Culver-City-CA/house,condo,apartment_duplex,townhouse_type/20432063_zpid/51617_rid/12m_days/globalrelevanceex_sort/34.048605,-118.340178,33.963223,-118.47785_rect/12_zm/") time.sleep(3) driver.find_element_by_class_name("collapsible-header").click() soup = BeautifulSoup(driver.page_source) region = soup.find("div",{"id":"hdp-price-history"}) table = region.find('table',{'class':'zsg-table yui3-toggle-content-minimized'}) print table 需要price/Tax history 的table但是通过class和id定位的结果是None,找不出问题在哪里了

爬虫网页使用Beautifulsoup遍历网页时 总是 没有'children'模块

import requests import bs4 from bs4 import BeautifulSoup import re def getHTMLText(url): try: r = requests.get(url, timrout = 30) r.raise_for_status() r.encoding = r.apparent_encoding return r.text except: return "" def fillUnivList(ulist, html): soup = BeautifulSoup(html, "html.parser") for tr in soup.find('tbody').children: if isinstance(tr, bs4.element.Tag): tds = tr('td') ulist.append([tds[0].string,tds[1].string,tds[2].string]) def printUnivList(ulist, num): print("{:^10}\t{:^10}\t{:^10}".format("排名","大学名称","总分")) for i in range(num): u = ulist[i] print("{:^10}\t{:^10}\t{:^10}".format(u[0],u[1],u[2])) def main(): #num = int(raw_input("请输入您要查询的大学数:")) unifo = [] url = "http://www.gaokaopai.com/paihang-otype-2.html?f=1&ly=bd&city=&cate=&batch_type=" html = getHTMLText(url) fillUnivList(unifo, html) printUnivList(unifo,10) main() 错误提示:AttributeError: 'NoneType' object has no attribute 'children'

Python爬虫BeautifulSoup爬取不到想要的信息

一、问题描述:想用Python 的BeautifulSoup 爬取网站 https://www.guazi.com/www/bmw/o2c-2/#bread页面中车辆的车型名称、年份、里程、价格等信息,但是选择了好多标签和属性值,都无法爬取到想要的信息。 二、 我的代码: import bs4, requests headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36'} for i in range(1,2): url = 'https://www.guazi.com/www/bmw/o'+str(i)+'c-2/#bread' r = requests.get(url, headers=headers) bs_r = bs4.BeautifulSoup(r.text, 'html.parser') uc_status = bs_r.find_all('a', class_='car_a') for uc in uc_status: model=uc.find('h2',class_='t').text print(model) 三、运行代码结果: Process finished with exit code 0 四、想要请教和解决的问题: 1):麻烦请问该网站是否可以用BeautifulSoup解析? 2):如果可以的话,我的代码是否有问题? 感谢

Python爬虫在Django中的使用问题

新入门Django,现在已经写好了一个Python爬虫,直接用Python跑测试没问题, ------在Django项目中加入了一个新的爬虫app,用model创建了表格,和展示爬虫的html ------但是runserver, 以后查看db.sqlite3里面对应的表已经创建,但是里面没有存爬到的内容, ------ 请大神们指教该怎么办, 代码如下 Spider.py, 爬虫并存入model.py 创建的**Website**表 ``` #!/usr/bin/python # -*- coding: utf-8 -*- # import data into mysql(sqlite3), must have these four lines defination: import os # # 我所创建的project名称为learn_spider;里面的app名称为website os.environ.setdefault("DJANGO_SETTINGS_MODULE", "blogproject.settings") # import django # django.setup() # urllib2 package: open resource by URL; re package: use regular expression to filter the objects import urllib.request, re import urllib.parse # BeautifulSoup: abstract data clearly from html/xml files from bs4 import BeautifulSoup # import tables from models.py from .models import Website # urlopen()方法需要加read()才可视源代码,其中decode("utf-8")表示以utf-8编码解析原网页,这个编码格式是根据网页源代码中<head>标签下的<meta charset="utf-8">来决定的。 ul = "https://baike.baidu.com/item/Python" req = urllib.request.Request(ul) html_python = urllib.request.urlopen(req).read().decode("utf-8") #html_python = urllib.request.urlopen('https://baike.baidu.com/item/Python').read().decode("utf-8") soup_python = BeautifulSoup(html_python, "html.parser") # print soup #这里用到了正则表达式进行筛选 item_list = soup_python.find_all('a', href=re.compile("item")) for each in item_list: print (each.string) # use quote to replace special characters in string(escape encode method) urls = "https://baike.baidu.com/item/" + urllib.parse.quote(each.string.encode("utf-8")) print (urls) html = urllib.request.urlopen(urls).read().decode("utf-8") soup = BeautifulSoup(html, "html.parser") if soup.find('div', 'lemma-summary') == None: text = "None" else: text = soup.find('div', 'lemma-summary').get_text() print (text) Website.objects.get_or_create(name=each.string, url=urls, text=text) text_python = soup_python.find('div', 'lemma-summary').text Website.objects.get_or_create(name="Python", url="https://baike.baidu.com/item/Python", text=text_python) ``` model.py 创建Website 表用于存储爬到的内容 ``` # -*- coding: utf-8 -*- from __future__ import unicode_literals from django.db import models # Create your models here. class Website(models.Model): name = models.CharField(max_length=100) url = models.CharField(max_length=100) text = models.TextField() def __unicode__(self): return self.name ``` view.py 提取表中已爬取的内容 ``` from __future__ import unicode_literals from django.shortcuts import render # Create your views here. from .models import Website def show(request): # 这里直接通过QuerySet API获取所有的object,默认返回类型为tuple(元组) queryset = Website.objects.all() # 传入三个渲染参数 return render(request, 'news/nws.html', {'QuerySet': queryset}) ```

关于爬虫百度百科问题,求教各位。代码如下,运行提示错误。

# -*- coding: utf-8 -*- """ Spyder Editor This is a temporary script file. """ import urllib2 from bs4 import BeautifulSoup import re import urlparse class UrlManager(object): def __init__(self): self.new_urls = set() self.old_urls = set() def add_new_url(self,url): if url is None: return if url not in self.new_urls and url not in self.old_urls: self.new_urls.add(url) def add_new_urls(self,urls): if urls is None or len(urls) == 0: return for url in urls: self.add_new_url(url) def has_new_url(self): return len(self.new_urls) != 0 def get_new_url(self): new_url = self.new_urls.pop() self.old_urls.add(new_url) return new_url class HtmlDownloader(object): def download(self,url): if url is None: return None response = urllib2.urlopen(url) if response.getcode() != 200: return None return response.read() class HtmlParser(object): def _get_new_urls(self,page_url,soup): new_urls = set() links = soup.find_all('a',href = re.compile(r'/item/(.*)')) for link in links: new_url = link['href'] new_full_url = urlparse.urljoin(page_url,new_url) new_urls.add(new_full_url) return new_urls def _get_new_data(self,page_url,soup): res_data = {} #url res_data['url'] = page_url # <dd class="lemmaWgt-lemmaTitle-title"><h1>Python</h1> title_node = soup.find('dd',class_ ="lemmaWgt-lemmaTitle-title").find("h1") res_data['title'] = title_node.get_text() #<div class="lemma-summary" label-module="lemmaSummary"> summary_node = soup.find('div',class_ = "lemma-summary") res_data['summary'] = summary_node.get_text() return res_data def parse(self,page_url,html_cont): if page_url is None or html_cont is None: return soup = BeautifulSoup(html_cont,'html_parser',from_encoding='utf-8') new_urls = self._get_new_urls(page_url,soup) new_data = self._get_new_data(page_url,soup) return new_urls,new_data class HtmlOutputer(object): def __init__(self): self.datas = [] def collect_data(self,data): if data is None: return self.datas.append(data) def output_html(self): fout = open('output.html','w') fout.write("<html>") fout.write("<body>") fout.write("<table>") for data in self.datas: fout.write("<tr>") fout.write("<td>%s</td>"% data['url']) fout.write("<td>%s</td>"% data['title'].encode('utf-8')) fout.write("<td>%s</td>"% data['summary'].encode('utf-8')) fout.write("</tr>") fout.write("</table>") fout.write("</body>") fout.write("</html>") fout.close() # 爬虫总调度程序 class SpiderMain(object): # 构造函数初始化url管理器、HTML下载器、HTML解析器、输出四个对象 def __init__(self): # url管理器 self.urls = UrlManager() # url下载器 self.downloader = HtmlDownloader() # url解析器 self.parser = HtmlParser() # 最终的输出 self.outputer = HtmlOutputer() # 爬虫调度程序 def craw(self, root_url): count = 1 # 添加入口URL self.urls.add_new_url(root_url) while self.urls.has_new_url(): try: # 取出新的URL new_url = self.urls.get_new_url() # 下载该url对应的页面 print("craw %d : %s" % (count, new_url)) html_cont = self.downloader.download(new_url) # 解析该url对应的页面,得到新的链接和内容 new_urls, new_data = self.parser.parse(new_url, html_cont) # 将新url添加到url管理器中 self.urls.add_new_urls(new_urls) # 将解析到的内容收集起来 self.outputer.collect_data(new_data) if count == 1000: # 爬取1000个页面即可 break count = count + 1 except: print("craw fail") # 最终输出爬取目标的内容 self.outputer.output_html() # 主函数启动爬虫 if __name__=="__main__": # root_url = "http://baike.baidu.com/item/Python/407313?fr=aladdin" root_url = "http://baike.baidu.com/item/Python/407313?fr=aladdin" obj_Spider = SpiderMain() obj_Spider.craw(root_url) 提示runfile('C:/Users/sun/.spyder/temp.py', wdir='C:/Users/sun/.spyder') craw 1 : http://baike.baidu.com/item/Python/407313?fr=aladdin craw fail

2019 AI开发者大会

2019 AI开发者大会(AI ProCon 2019)是由中国IT社区CSDN主办的AI技术与产业年度盛会。多年经验淬炼,如今蓄势待发:2019年9月6-7日,大会将有近百位中美顶尖AI专家、知名企业代表以及千余名AI开发者齐聚北京,进行技术解读和产业论证。我们不空谈口号,只谈技术,诚挚邀请AI业内人士一起共铸人工智能新篇章!

实现简单的文件系统

实验内容: 通过对具体的文件存储空间的管理、文件的物理结构、目录结构和文件操作的实现,加深对文件系统内部功能和实现过程的理解。 要求: 1.在内存中开辟一个虚拟磁盘空间作为文件存储器,在其上实现一个简

MIPS单周期CPU-组成原理实验-华中科技大学

使用logisim布线完成的MIPS单周期CPU,可支持28条指令。跑马灯的代码已经装入了寄存器,可以直接开启时钟运行。

2019数学建模A题高压油管的压力控制 省一论文即代码

2019数学建模A题高压油管的压力控制省一完整论文即详细C++和Matlab代码,希望对同学们有所帮助

基于QT和OpenCV的五子棋实现源码

一个简单的五子棋应用,基于QT和OpenCV的实现源码,通过相邻棋子判断是否获胜,不包含人工智能算法,适合新手入门

Git 实用技巧

这几年越来越多的开发团队使用了Git,掌握Git的使用已经越来越重要,已经是一个开发者必备的一项技能;但很多人在刚开始学习Git的时候会遇到很多疑问,比如之前使用过SVN的开发者想不通Git提交代码为什么需要先commit然后再去push,而不是一条命令一次性搞定; 更多的开发者对Git已经入门,不过在遇到一些代码冲突、需要恢复Git代码时候就不知所措,这个时候哪些对 Git掌握得比较好的少数人,就像团队中的神一样,在队友遇到 Git 相关的问题的时候用各种流利的操作来帮助队友于水火。 我去年刚加入新团队,发现一些同事对Git的常规操作没太大问题,但对Git的理解还是比较生疏,比如说分支和分支之间的关联关系、合并代码时候的冲突解决、提交代码前未拉取新代码导致冲突问题的处理等,我在协助处理这些问题的时候也记录各种问题的解决办法,希望整理后通过教程帮助到更多对Git操作进阶的开发者。 本期教程学习方法分为“掌握基础——稳步进阶——熟悉协作”三个层次。从掌握基础的 Git的推送和拉取开始,以案例进行演示,分析每一个步骤的操作方式和原理,从理解Git 工具的操作到学会代码存储结构、演示不同场景下Git遇到问题的不同处理方案。循序渐进让同学们掌握Git工具在团队协作中的整体协作流程。 在教程中会通过大量案例进行分析,案例会模拟在工作中遇到的问题,从最基础的代码提交和拉取、代码冲突解决、代码仓库的数据维护、Git服务端搭建等。为了让同学们容易理解,对Git简单易懂,文章中详细记录了详细的操作步骤,提供大量演示截图和解析。在教程的最后部分,会从提升团队整体效率的角度对Git工具进行讲解,包括规范操作、Gitlab的搭建、钩子事件的应用等。 为了让同学们可以利用碎片化时间来灵活学习,在教程文章中大程度降低了上下文的依赖,让大家可以在工作之余进行学习与实战,并同时掌握里面涉及的Git不常见操作的相关知识,理解Git工具在工作遇到的问题解决思路和方法,相信一定会对大家的前端技能进阶大有帮助。

实用主义学Python(小白也容易上手的Python实用案例)

原价169,限时立减100元! 系统掌握Python核心语法16点,轻松应对工作中80%以上的Python使用场景! 69元=72讲+源码+社群答疑+讲师社群分享会&nbsp; 【哪些人适合学习这门课程?】 1)大学生,平时只学习了Python理论,并未接触Python实战问题; 2)对Python实用技能掌握薄弱的人,自动化、爬虫、数据分析能让你快速提高工作效率; 3)想学习新技术,如:人工智能、机器学习、深度学习等,这门课程是你的必修课程; 4)想修炼更好的编程内功,优秀的工程师肯定不能只会一门语言,Python语言功能强大、使用高效、简单易学。 【超实用技能】 从零开始 自动生成工作周报 职场升级 豆瓣电影数据爬取 实用案例 奥运冠军数据分析 自动化办公:通过Python自动化分析Excel数据并自动操作Word文档,最终获得一份基于Excel表格的数据分析报告。 豆瓣电影爬虫:通过Python自动爬取豆瓣电影信息并将电影图片保存到本地。 奥运会数据分析实战 简介:通过Python分析120年间奥运会的数据,从不同角度入手分析,从而得出一些有趣的结论。 【超人气老师】 二两 中国人工智能协会高级会员 生成对抗神经网络研究者 《深入浅出生成对抗网络:原理剖析与TensorFlow实现》一书作者 阿里云大学云学院导师 前大型游戏公司后端工程师 【超丰富实用案例】 0)图片背景去除案例 1)自动生成工作周报案例 2)豆瓣电影数据爬取案例 3)奥运会数据分析案例 4)自动处理邮件案例 5)github信息爬取/更新提醒案例 6)B站百大UP信息爬取与分析案例 7)构建自己的论文网站案例

深度学习原理+项目实战+算法详解+主流框架(套餐)

深度学习系列课程从深度学习基础知识点开始讲解一步步进入神经网络的世界再到卷积和递归神经网络,详解各大经典网络架构。实战部分选择当下最火爆深度学习框架PyTorch与Tensorflow/Keras,全程实战演示框架核心使用与建模方法。项目实战部分选择计算机视觉与自然语言处理领域经典项目,从零开始详解算法原理,debug模式逐行代码解读。适合准备就业和转行的同学们加入学习! 建议按照下列课程顺序来进行学习 (1)掌握深度学习必备经典网络架构 (2)深度框架实战方法 (3)计算机视觉与自然语言处理项目实战。(按照课程排列顺序即可)

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

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

三个项目玩转深度学习(附1G源码)

从事大数据与人工智能开发与实践约十年,钱老师亲自见证了大数据行业的发展与人工智能的从冷到热。事实证明,计算机技术的发展,算力突破,海量数据,机器人技术等,开启了第四次工业革命的序章。深度学习图像分类一直是人工智能的经典任务,是智慧零售、安防、无人驾驶等机器视觉应用领域的核心技术之一,掌握图像分类技术是机器视觉学习的重中之重。针对现有线上学习的特点与实际需求,我们开发了人工智能案例实战系列课程。打造:以项目案例实践为驱动的课程学习方式,覆盖了智能零售,智慧交通等常见领域,通过基础学习、项目案例实践、社群答疑,三维立体的方式,打造最好的学习效果。

Java基础知识面试题(2020最新版)

文章目录Java概述何为编程什么是Javajdk1.5之后的三大版本JVM、JRE和JDK的关系什么是跨平台性?原理是什么Java语言有哪些特点什么是字节码?采用字节码的最大好处是什么什么是Java程序的主类?应用程序和小程序的主类有何不同?Java应用程序与小程序之间有那些差别?Java和C++的区别Oracle JDK 和 OpenJDK 的对比基础语法数据类型Java有哪些数据类型switc...

Python界面版学生管理系统

前不久上传了一个控制台版本的学生管理系统,这个是Python界面版学生管理系统,这个是使用pycharm开发的一个有界面的学生管理系统,基本的增删改查,里面又演示视频和完整代码,有需要的伙伴可以自行下

Vue.js 2.0之全家桶系列视频课程

基于新的Vue.js 2.3版本, 目前新全的Vue.js教学视频,让你少走弯路,直达技术前沿! 1. 包含Vue.js全家桶(vue.js、vue-router、axios、vuex、vue-cli、webpack、ElementUI等) 2. 采用笔记+代码案例的形式讲解,通俗易懂

linux“开发工具三剑客”速成攻略

工欲善其事,必先利其器。Vim+Git+Makefile是Linux环境下嵌入式开发常用的工具。本专题主要面向初次接触Linux的新手,熟练掌握工作中常用的工具,在以后的学习和工作中提高效率。

JAVA初级工程师面试36问(完结)

第三十一问: 说一下线程中sleep()和wait()区别? 1 . sleep()是让正在执行的线程主动让出CPU,当时间到了,在回到自己的线程让程序运行。但是它并没有释放同步资源锁只是让出。 2.wait()是让当前线程暂时退让出同步资源锁,让其他线程来获取到这个同步资源在调用notify()方法,才会让其解除wait状态,再次参与抢资源。 3. sleep()方法可以在任何地方使用,而wait()只能在同步方法或同步块使用。 ...

java jdk 8 帮助文档 中文 文档 chm 谷歌翻译

JDK1.8 API 中文谷歌翻译版 java帮助文档 JDK API java 帮助文档 谷歌翻译 JDK1.8 API 中文 谷歌翻译版 java帮助文档 Java最新帮助文档 本帮助文档是使用谷

我以为我对Mysql事务很熟,直到我遇到了阿里面试官

太惨了,面试又被吊打

智鼎(附答案).zip

并不是完整题库,但是有智鼎在线2019年9、10、11三个月的试题,有十七套以上题目,普通的网申行测题足以对付,可以在做题时自己总结一些规律,都不是很难

Visual Assist X 破解补丁

vs a's'sixt插件 支持vs2008-vs2019 亲测可以破解,希望可以帮助到大家

150讲轻松搞定Python网络爬虫

【为什么学爬虫?】 &nbsp; &nbsp; &nbsp; &nbsp;1、爬虫入手容易,但是深入较难,如何写出高效率的爬虫,如何写出灵活性高可扩展的爬虫都是一项技术活。另外在爬虫过程中,经常容易遇到被反爬虫,比如字体反爬、IP识别、验证码等,如何层层攻克难点拿到想要的数据,这门课程,你都能学到! &nbsp; &nbsp; &nbsp; &nbsp;2、如果是作为一个其他行业的开发者,比如app开发,web开发,学习爬虫能让你加强对技术的认知,能够开发出更加安全的软件和网站 【课程设计】 一个完整的爬虫程序,无论大小,总体来说可以分成三个步骤,分别是: 网络请求:模拟浏览器的行为从网上抓取数据。 数据解析:将请求下来的数据进行过滤,提取我们想要的数据。 数据存储:将提取到的数据存储到硬盘或者内存中。比如用mysql数据库或者redis等。 那么本课程也是按照这几个步骤循序渐进的进行讲解,带领学生完整的掌握每个步骤的技术。另外,因为爬虫的多样性,在爬取的过程中可能会发生被反爬、效率低下等。因此我们又增加了两个章节用来提高爬虫程序的灵活性,分别是: 爬虫进阶:包括IP代理,多线程爬虫,图形验证码识别、JS加密解密、动态网页爬虫、字体反爬识别等。 Scrapy和分布式爬虫:Scrapy框架、Scrapy-redis组件、分布式爬虫等。 通过爬虫进阶的知识点我们能应付大量的反爬网站,而Scrapy框架作为一个专业的爬虫框架,使用他可以快速提高我们编写爬虫程序的效率和速度。另外如果一台机器不能满足你的需求,我们可以用分布式爬虫让多台机器帮助你快速爬取数据。 &nbsp; 从基础爬虫到商业化应用爬虫,本套课程满足您的所有需求! 【课程服务】 专属付费社群+每周三讨论会+1v1答疑

JavaWEB商城项目(包括数据库)

功能描述:包括用户的登录注册,以及个人资料的修改.商品的分类展示,详情,加入购物车,生成订单,到银行支付等!另外还有收货地址的和我的收藏等常用操作.环境(JDK 1.7 ,mysql 5.5,Ecli

Python数据挖掘简易入门

&nbsp; &nbsp; &nbsp; &nbsp; 本课程为Python数据挖掘方向的入门课程,课程主要以真实数据为基础,详细介绍数据挖掘入门的流程和使用Python实现pandas与numpy在数据挖掘方向的运用,并深入学习如何运用scikit-learn调用常用的数据挖掘算法解决数据挖掘问题,为进一步深入学习数据挖掘打下扎实的基础。

一学即懂的计算机视觉(第一季)

图像处理和计算机视觉的课程大家已经看过很多,但总有“听不透”,“用不了”的感觉。课程致力于创建人人都能听的懂的计算机视觉,通过生动、细腻的讲解配合实战演练,让学生真正学懂、用会。 【超实用课程内容】 课程内容分为三篇,包括视觉系统构成,图像处理基础,特征提取与描述,运动跟踪,位姿估计,三维重构等内容。课程理论与实战结合,注重教学内容的可视化和工程实践,为人工智能视觉研发及算法工程师等相关高薪职位就业打下坚实基础。 【课程如何观看?】 PC端:https://edu.csdn.net/course/detail/26281 移动端:CSDN 学院APP(注意不是CSDN APP哦) 本课程为录播课,课程2年有效观看时长,但是大家可以抓紧时间学习后一起讨论哦~ 【学员专享增值服务】 源码开放 课件、课程案例代码完全开放给你,你可以根据所学知识,自行修改、优化 下载方式:电脑登录https://edu.csdn.net/course/detail/26281,点击右下方课程资料、代码、课件等打包下载

软件测试2小时入门

本课程内容系统、全面、简洁、通俗易懂,通过2个多小时的介绍,让大家对软件测试有个系统的理解和认识,具备基本的软件测试理论基础。 主要内容分为5个部分: 1 软件测试概述,了解测试是什么、测试的对象、原则、流程、方法、模型;&nbsp; 2.常用的黑盒测试用例设计方法及示例演示;&nbsp; 3 常用白盒测试用例设计方法及示例演示;&nbsp; 4.自动化测试优缺点、使用范围及示例‘;&nbsp; 5.测试经验谈。

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

课程主要面向嵌入式Linux初学者、工程师、学生 主要从一下几方面进行讲解: 1.linux学习路线、基本命令、高级命令 2.shell、vi及vim入门讲解 3.软件安装下载、NFS、Samba、FTP等服务器配置及使用

2019 Python开发者日-培训

本次活动将秉承“只讲技术,拒绝空谈”的理念,邀请十余位身处一线的Python技术专家,重点围绕Web开发、自动化运维、数据分析、人工智能等技术模块,分享真实生产环境中使用Python应对IT挑战的真知灼见。此外,针对不同层次的开发者,大会还安排了深度培训实操环节,为开发者们带来更多深度实战的机会。

快速入门Android开发 视频 教程 android studio

这是一门快速入门Android开发课程,顾名思义是让大家能快速入门Android开发。 学完能让你学会如下知识点: Android的发展历程 搭建Java开发环境 搭建Android开发环境 Android Studio基础使用方法 Android Studio创建项目 项目运行到模拟器 项目运行到真实手机 Android中常用控件 排查开发中的错误 Android中请求网络 常用Android开发命令 快速入门Gradle构建系统 项目实战:看美图 常用Android Studio使用技巧 项目签名打包 如何上架市场

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

通过六个实际的编码项目,带领同学入门人工智能。这些项目涉及机器学习(回归,分类,聚类),深度学习(神经网络),底层数学算法,Weka数据挖掘,利用Git开源项目实战等。

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

这是一个门针对零基础学员学习微信小程序开发的视频教学课程。课程采用腾讯官方文档作为教程的唯一技术资料来源。杜绝网络上质量良莠不齐的资料给学员学习带来的障碍。 视频课程按照开发工具的下载、安装、使用、程序结构、视图层、逻辑层、微信小程序等几个部分组织课程,详细讲解整个小程序的开发过程

相关热词 c#对文件改写权限 c#中tostring c#支付宝回掉 c#转换成数字 c#判断除法是否有模 c# 横向chart c#控件选择多个 c#报表如何锁定表头 c#分级显示数据 c# 不区分大小写替换
立即提问
相关内容推荐