Python爬虫、requests库的get方法,带上headers后出现编码错误

目标网站:知乎
Pyrhon版本:3.6


agent = 'Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/59.0'
header = {
    'HOST': 'www.zhihu.com',
    'Referer': 'https://www.zhihu.com',
    'User-Agent': agent
}

response = requests.get('https://www.zhihu.com', headers=header)

报错内容:

 Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Anaconda3\lib\site-packages\requests\api.py", line 72, in get
    return request('get', url, params=params, **kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\api.py", line 58, in request
    return session.request(method=method, url=url, **kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 518, in request
    resp = self.send(prep, **send_kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\sessions.py", line 639, in send
    r = adapter.send(request, **kwargs)
  File "C:\Anaconda3\lib\site-packages\requests\adapters.py", line 438, in send
    timeout=timeout
  File "C:\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 600, in urlopen
    chunked=chunked)
  File "C:\Anaconda3\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 356, in _make_request
    conn.request(method, url, **httplib_request_kw)
  File "C:\Anaconda3\lib\http\client.py", line 1239, in request
    self._send_request(method, url, body, headers, encode_chunked)
  File "C:\Anaconda3\lib\http\client.py", line 1280, in _send_request
    self.putheader(hdr, value)
  File "C:\Anaconda3\lib\http\client.py", line 1212, in putheader
    values[i] = one_value.encode('latin-1')
UnicodeEncodeError: 'latin-1' codec can't encode character '\u2026' in position 30: ordinal not in range(256)

\u2026好像是空格,看了下源码,好像是空格要转latin-1这种编码失败了,
我上面有空格的是agent,要用来伪装浏览器,这可怎么办,
而且在我看的那个知乎爬虫视频中,他也是有空格的,却不出错,这是我的环境有问题吗,
请大佬们能指点一下

4个回答

头有问题啊!'Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/59.0'不知道怎么会出现...这种符号!自己去复制浏览器的user-agent

qq_39457091
努力才能被爱慕 对了,\u2026是省略号,问题写错了
接近 2 年之前 回复
qq_39457091
努力才能被爱慕 确实是头的问题,...是因为太长了,浏览器没打开全部 ,多谢大佬
接近 2 年之前 回复

你的用户代理agent是用户未登录时的,而下面get的URL是登录后的URL。你先登录知乎,之后重新获得user-agent,就可以了。如果是模拟用户登录,你可以在网上找另外一些资料

qq_39457091
努力才能被爱慕 如2楼所说,是头的问题,我这里只是想获得他的xsrf,还没做到后面,感谢回答
接近 2 年之前 回复

agent中的字符串是不是都是ASCII字符。有没有其他字符

qq_39457091
努力才能被爱慕 如2楼所说,是头的问题,应该是...这个符号编译失败,代码太长显示的省略号,感谢回答
接近 2 年之前 回复

Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:59.0) Gecko/20100101 Firefox/59.0

Mozilla/5.0 (Windows NT 6.1; W…) Gecko/20100101 Firefox/59.0

在浏览器F12复制时代码没全打开,没复制完全,多了...这个符号,应该是这个导致的编码失败

qq_39457091
努力才能被爱慕 对了,\u2026是省略号,问题写错了
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
python scrapy 爬虫图片新手求助
求问大神 我这个data她怎么了 报错: 2020-02-07 09:24:55 [scrapy.utils.log] INFO: Scrapy 1.8.0 started (bot: meizitu) 2020-02-07 09:24:55 [scrapy.utils.log] INFO: Versions: lxml 4.5.0.0, libxml2 2.9.5, cssselect 1.1.0, parsel 1.5.2, w3lib 1.21.0, Twisted 19.10.0, Python 3.7.3 (v3.7.3:ef4ec6ed12, Mar 25 2019, 22:22:05) [MSC v.1916 64 bit (AMD64)], pyOpenSSL 19.1.0 (OpenSSL 1.1.1d 10 Sep 2019), cryptography 2.8, Platform Windows-10-10.0.17763-SP0 2020-02-07 09:24:55 [scrapy.crawler] INFO: Overridden settings: {'BOT_NAME': 'meizitu', 'NEWSPIDER_MODULE': 'meizitu.spiders', 'ROBOTSTXT_OBEY': True, 'SPIDER_MODULES': ['meizitu.spiders']} 2020-02-07 09:24:55 [scrapy.extensions.telnet] INFO: Telnet Password: 0936097982b9bcc8 2020-02-07 09:24:55 [scrapy.middleware] INFO: Enabled extensions: ['scrapy.extensions.corestats.CoreStats', 'scrapy.extensions.telnet.TelnetConsole', 'scrapy.extensions.logstats.LogStats'] 2020-02-07 09:24:56 [scrapy.middleware] INFO: Enabled downloader middlewares: ['scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware', 'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware', 'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware', 'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware', 'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware', 'scrapy.downloadermiddlewares.retry.RetryMiddleware', 'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware', 'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware', 'scrapy.downloadermiddlewares.redirect.RedirectMiddleware', 'scrapy.downloadermiddlewares.cookies.CookiesMiddleware', 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware', 'scrapy.downloadermiddlewares.stats.DownloaderStats'] 2020-02-07 09:24:56 [scrapy.middleware] INFO: Enabled spider middlewares: ['scrapy.spidermiddlewares.httperror.HttpErrorMiddleware', 'scrapy.spidermiddlewares.offsite.OffsiteMiddleware', 'scrapy.spidermiddlewares.referer.RefererMiddleware', 'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware', 'scrapy.spidermiddlewares.depth.DepthMiddleware'] Unhandled error in Deferred: 2020-02-07 09:24:56 [twisted] CRITICAL: Unhandled error in Deferred: Traceback (most recent call last): File "e:\python3.7\lib\site-packages\scrapy\crawler.py", line 184, in crawl return self._crawl(crawler, *args, **kwargs) File "e:\python3.7\lib\site-packages\scrapy\crawler.py", line 188, in _crawl d = crawler.crawl(*args, **kwargs) File "e:\python3.7\lib\site-packages\twisted\internet\defer.py", line 1613, in unwindGenerator return _cancellableInlineCallbacks(gen) File "e:\python3.7\lib\site-packages\twisted\internet\defer.py", line 1529, in _cancellableInlineCallbacks _inlineCallbacks(None, g, status) --- <exception caught here> --- File "e:\python3.7\lib\site-packages\twisted\internet\defer.py", line 1418, in _inlineCallbacks result = g.send(result) File "e:\python3.7\lib\site-packages\scrapy\crawler.py", line 86, in crawl self.engine = self._create_engine() File "e:\python3.7\lib\site-packages\scrapy\crawler.py", line 111, in _create_engine return ExecutionEngine(self, lambda _: self.stop()) File "e:\python3.7\lib\site-packages\scrapy\core\engine.py", line 70, in __init__ self.scraper = Scraper(crawler) File "e:\python3.7\lib\site-packages\scrapy\core\scraper.py", line 71, in __init__ self.itemproc = itemproc_cls.from_crawler(crawler) File "e:\python3.7\lib\site-packages\scrapy\middleware.py", line 53, in from_crawler return cls.from_settings(crawler.settings, crawler) File "e:\python3.7\lib\site-packages\scrapy\middleware.py", line 34, in from_settings mwcls = load_object(clspath) File "e:\python3.7\lib\site-packages\scrapy\utils\misc.py", line 46, in load_object mod = import_module(module) File "e:\python3.7\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 724, in exec_module File "<frozen importlib._bootstrap_external>", line 860, in get_code File "<frozen importlib._bootstrap_external>", line 791, in source_to_code File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed builtins.SyntaxError: unexpected EOF while parsing (pipelines.py, line 22) 2020-02-07 09:24:56 [twisted] CRITICAL: Traceback (most recent call last): File "e:\python3.7\lib\site-packages\twisted\internet\defer.py", line 1418, in _inlineCallbacks result = g.send(result) File "e:\python3.7\lib\site-packages\scrapy\crawler.py", line 86, in crawl self.engine = self._create_engine() File "e:\python3.7\lib\site-packages\scrapy\crawler.py", line 111, in _create_engine return ExecutionEngine(self, lambda _: self.stop()) File "e:\python3.7\lib\site-packages\scrapy\core\engine.py", line 70, in __init__ self.scraper = Scraper(crawler) File "e:\python3.7\lib\site-packages\scrapy\core\scraper.py", line 71, in __init__ self.itemproc = itemproc_cls.from_crawler(crawler) File "e:\python3.7\lib\site-packages\scrapy\middleware.py", line 53, in from_crawler return cls.from_settings(crawler.settings, crawler) File "e:\python3.7\lib\site-packages\scrapy\middleware.py", line 34, in from_settings mwcls = load_object(clspath) File "e:\python3.7\lib\site-packages\scrapy\utils\misc.py", line 46, in load_object mod = import_module(module) File "e:\python3.7\lib\importlib\__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1006, in _gcd_import File "<frozen importlib._bootstrap>", line 983, in _find_and_load File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 677, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 724, in exec_module File "<frozen importlib._bootstrap_external>", line 860, in get_code File "<frozen importlib._bootstrap_external>", line 791, in source_to_code File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed File "E:\python_work\爬虫\meizitu\meizitu\pipelines.py", line 22 f.write(data) ^ SyntaxError: unexpected EOF while parsing 代码如下: pipeline ``` import requests class MeizituPipeline(object): def process_item(self, item, spider): print("main_title:",item['main_title']) print("main_image:", item['main_image']) print("main_tags:", item['main_tags']) print("main_meta:", item['main_meta']) print("page:", item['main_pagenavi']) url = requests.get(item['main_image']) print(url) try: with open(item['main_pagenavi'] +'.jpg','wb') as f: data = url.read() f.write(data) ``` image.py ``` import scrapy from scrapy.http import response from ..items import MeizituItem class ImageSpider(scrapy.Spider): #定义Spider的名字scrapy crawl meiaitu name = 'SpiderMain' #允许爬虫的域名 allowed_domains = ['www.mzitu.com/203554'] #爬取的首页列表 start_urls = ['https://www.mzitu.com/203554'] #负责提取response的信息 #response代表下载器从start_urls中的url的到的回应 #提取的信息 def parse(self,response): #遍历所有节点 for Main in response.xpath('//div[@class = "main"]'): item = MeizituItem() #匹配所有节点元素/html/body/div[2]/div[1]/div[3]/p/a content = Main.xpath('//div[@class = "content"]') item['main_title'] = content.xpath('./h2/text()') item['main_image'] = content.xpath('./div[@class="main-image"]/p/a/img') item['main_meta'] = content.xpath('./div[@class="main-meta"]/span/text()').extract() item['main_tags'] = content.xpath('./div[@class="main-tags"]/a/text()').extract() item['main_pagenavi'] = content.xpath('./div[@class="main_pagenavi"]/span/text()').extract_first() yield item new_links = response.xpath('.//div[@class="pagenavi"]/a/@href').extract() new_link =new_links[-1] yield scrapy.Request(new_link,callback=self.parse) ``` setting ``` BOT_NAME = 'meizitu' SPIDER_MODULES = ['meizitu.spiders'] NEWSPIDER_MODULE = 'meizitu.spiders' ROBOTSTXT_OBEY = True #配置默认请求头 DEFAULT_REQUEST_HEADERS = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36", 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' } ITEM_PIPELINES = { 'meizitu.pipelines.MeizituPipeline':300, } IMAGES_STORE = 'E:\python_work\爬虫\meizitu' IMAGES_MIN_HEIGHT = 1050 IMAGES_MIN_WIDTH = 700 ```
python爬虫爬取的图片存在错误打不开
python3写的不知道哪里错了,求教大家帮看看 import requests from bs4 import BeautifulSoup ''' https://www.mzitu.com/ ''' def get_girls(url): headers = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" } Picreferer = {'User-Agent': "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36" } path = 'D:/mzitu/' html = requests.get(url,headers=headers).text all_list = BeautifulSoup(html,'lxml').find('ul',id="pins").find_all('li') for _ in all_list: girl_title = _.get_text() girl_url = _.find('img')['data-original'] print("{}:{}".format(girl_title,girl_url)) response = requests.get(girl_url,headers=headers) fileName = girl_title + '.jpg' print('正在保存图片' + fileName) with open(fileName,'wb') as f: f.write(response.content) if __name__ =="__main__": for page in range(1,229): url = 'https://www.mzitu.com/page/%s/' % page get_girls(url)
python,爬虫遇到重定向页面,如何获取动向后地址的response headers里的内容?
## 爬虫大致流程是这样的 ![图片说明](https://img-ask.csdn.net/upload/201911/04/1572853822_754760.png) ## 我想获取resul.jsf里Location的值 ![图片说明](https://img-ask.csdn.net/upload/201911/04/1572854659_247812.png) ## 下面是我写的代码,但是得不到结果,求大佬帮忙看一下。 ## 我首先访问这个站点https://patentscope2.wipo.int/search/en/search.jsf ,从页面信息中获取ViewData的值,然后构建post data,把data加进去再次访问这个网站。 ![图片说明](https://img-ask.csdn.net/upload/201911/04/1572854402_908823.png) ``` import re import requests s = requests.Session() r = s.get('https://patentscope2.wipo.int/search/en/search.jsf') resp = r.text # 获取ViewState值 viewstate = re.findall('ViewState:0.*value=\"([0-9\-:]*)\"',resp)[0] # 构建data字典 searchfp = 'US20180094236' data={'javax.faces.partial.ajax': 'true', 'javax.faces.source': 'simpleSearchForm:commandSimpleFPSearch', 'javax.faces.partial.execute': '@all', 'simpleSearchForm:commandSimpleFPSearch': 'simpleSearchForm:commandSimpleFPSearch', 'simpleSearchForm': 'simpleSearchForm', 'simpleSearchForm:j_idt216_focus': '', 'simpleSearchForm%3Aj_idt206_input': 'FP', 'simpleSearchForm:fpSearch': searchfp, 'javax.faces.ViewState': viewstate} r = s.post('https://patentscope2.wipo.int/search/en/search.jsf',data = data) ``` ## 然后得到一个result.jsf连接地址,再访问这个连接却得不到目标数据 ![图片说明](https://img-ask.csdn.net/upload/201911/04/1572854616_903525.png) ``` # 获取/result.jsf链接地址 vid = re.findall('_vid=([A-Z0-9\-]*)\"',r.text)[0] re_url = 'https://patentscope2.wipo.int/search/en/result.jsf?_vid='+vid # 访问/result.jsf后却没有去到正确的地方 r = s.get(re_url) resp = r.text print(r.headers) print(r.status_code) print(resp) # 这里status_code时500,并且有页面内容,但不是目标页面 ```
python的requests出现10053错误,你的主机中的软件中止了一个已建立的连接。
代码: response = requests.get(url=url, headers=headers) 是在做爬虫,昨天爬的好好的,今天就出现这个错误了, 重启爬虫,一开始能爬,过一会又出错,希望大神帮我看下 报错如下: ``` Traceback (most recent call last): File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen chunked=chunked) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request six.raise_from(e, None) File "<string>", line 2, in raise_from File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 383, in _make_request httplib_response = conn.getresponse() File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\http\client.py", line 1331, in getresponse response.begin() File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\http\client.py", line 297, in begin version, status, reason = self._read_status() File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\http\client.py", line 258, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\socket.py", line 586, in readinto return self._sock.recv_into(b) ConnectionAbortedError: [WinError 10053] 你的主机中的软件中止了一个已建立的连接。 During handling of the above exception, another exception occurred: Traceback (most recent call last): File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\requests\adapters.py", line 440, in send timeout=timeout File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 639, in urlopen _stacktrace=sys.exc_info()[2]) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\util\retry.py", line 357, in increment raise six.reraise(type(error), error, _stacktrace) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\packages\six.py", line 685, in reraise raise value.with_traceback(tb) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 601, in urlopen chunked=chunked) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 387, in _make_request six.raise_from(e, None) File "<string>", line 2, in raise_from File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\urllib3\connectionpool.py", line 383, in _make_request httplib_response = conn.getresponse() File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\http\client.py", line 1331, in getresponse response.begin() File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\http\client.py", line 297, in begin version, status, reason = self._read_status() File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\http\client.py", line 258, in _read_status line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1") File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\socket.py", line 586, in readinto return self._sock.recv_into(b) urllib3.exceptions.ProtocolError: ('Connection aborted.', ConnectionAbortedError(10053, '你的主机中的软件中止了一个已建立的连接。', None, 10053, None)) During handling of the above exception, another exception occurred: Traceback (most recent call last): File "F:/temp/wosSpider/spider/main.py", line 476, in <module> wos_crawl.post_data() File "F:/temp/wosSpider/spider/main.py", line 184, in post_data response = requests.get(url=url, headers=headers, allow_redirects=False, ) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\requests\api.py", line 72, in get return request('get', url, params=params, **kwargs) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\requests\api.py", line 58, in request return session.request(method=method, url=url, **kwargs) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\requests\sessions.py", line 508, in request resp = self.send(prep, **send_kwargs) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\requests\sessions.py", line 618, in send r = adapter.send(request, **kwargs) File "C:\Users\longziyi\Anaconda3\envs\wos_spider\lib\site-packages\requests\adapters.py", line 490, in send raise ConnectionError(err, request=request) requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionAbortedError(10053, '你的主机中的软件中止了一个已建立的连接。', None, 10053, None)) ```
请教python 爬虫 ip代理 的问题
我在做一个从淘宝上抓照片的爬虫,然后在应对重定向问题的时候用ip代理,使用代理部分的代码如下,ip代理是从[西刺代理](http://www.xicidaili.com/nn "")上抓下来并检验的,高匿的,但还是没能解决这个问题。请问下这是怎么个情况,该如何解决。如果说这样用代理是没有错的话,那是怎么被反爬虫了? ```proxies = [ {'http':'222.83.14.145:3128'}, {'http':'211.144.76.58:9000'}, {'http':'101.200.138.85:3128'}, {'http':'114.40.79.27:8080'}, {'http':'119.29.53.211:80'}, {'http':'58.49.144.208:8090'}, {'http':'42.96.197.187:80'}, {'http':'119.29.171.208:80'}, {'http':'124.160.194.71:80'}, {'http':'27.10.109.113:8118'}, {'http':'58.23.182.211:8118'}, {'http':'119.188.94.145:80'}, {'http':'113.243.132.120:8080'}, {'http':'122.96.59.107:843'}, {'http':'42.233.18.143:8118'}, {'http':'122.237.107.30:80'}, {'http':'117.69.6.181:8118'}, {'http':'118.113.7.48:8118'}, {'http':"222.83.14.145:3128"}, {'http':"115.160.137.178:8088"} ] IPNum = ipcount%len(proxies) print IPNum print proxies[IPNum] html = requests.get(each,headers = header,proxies = proxies[IPNum]) ```
python爬虫爬取斗图啦上的图片,打开爬取的图片显示图片错误
![图片说明](https://img-ask.csdn.net/upload/201908/03/1564803739_452406.png) ```![图片说明](https://img-ask.csdn.net/upload/201908/03/1564803394_897302.png) import requests,re,os from bs4 import BeautifulSoup def get_url(url): headers={ 'User_Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36', 'Referrer':url } res = requests.get(url,headers=headers) text = res.text soup = BeautifulSoup(text,'lxml') divs = soup.find('div',class_='page-content text-center') a_s = divs.find_all('a',attrs={'class': 'col-xs-6 col-sm-3'}) for a in a_s: #print(a) herf = a['href'] img = a.find('img') print(img) #获取最内层标签方法如下 if a.img['class']==['gif']: pass else: alt = a.img['alt'] alt = re.sub(r'[,@??!!:。]','',alt) #print(alt) data = a.img['data-original'] print(data) datastr = '.'+data.split('.')[-1] filename = alt + datastr #print(filename) #print(os.getcwd()) if os.path.exists(os.getcwd() + "\斗图啦\\"+filename): print('文件已经存在') else: filename = os.getcwd() + "\斗图啦\\"+filename print(filename) with open(filename,'w') as fp: fp.write(data) def main(): if os.path.exists(os.getcwd()+'\斗图啦\\'): print('文件夹已存在') else: os.mkdir(os.getcwd() + "\斗图啦\\") #for x in range(1,101): # url = 'http://www.doutula.com/photo/list/?page=%d' %x # get_url(url) url = 'http://www.doutula.com/photo/list/?page=1' get_url(url) if __name__ == '__main__': main() ``` ```
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()_是我为验证结果打的。
Xpath爬虫获取数据不完整
尝试学习Xpath爬虫,通过Xpath helper获得数据99条,其中最后一条为“$PORT”,如图 ![图片说明](https://img-ask.csdn.net/upload/202001/15/1579057925_476322.png) 代码如下,使用这个Xpath路径只能返回"$PORT",其他98条数据没了....... ``` import requests import csv from lxml import etree url = 'https://www.msccruisesusa.com/webapp/wcs/stores/servlet/MSC_SearchCruiseManagerRedirectCmd?storeId=12264&langId=-1004&catalogId=10001&monthsResult=&areaFilter=MED%40NOR%40&embarkFilter=&lengthFilter=&departureFrom=01.11.2020&departureTo=04.11.2020&ships=&category=&onlyAvailableCruises=true&packageTrf=false&packageTpt=false&packageCrol=false&packageCrfl=false&noAdults=2&noChildren=0&noJChildren=0&noInfant=0&dealsInput=false&tripSpecificationPanel=true&shipPreferencesPanel=false&dealsPanel=false' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'} source = requests.get(url,headers=headers).content.decode('UTF-8') html = etree.HTML(source) portList = html.xpath('//*[@class="cr-city-name"]') for port in portList: print(port.xpath('string()')) ``` 求各位大神搭救,不知道是哪里出了问题......网上遍寻不到相似的情况
请问以下爬虫程序错在哪里,爬取到的数据存不进MQSQL数据库
1、请问以下爬虫程序错在哪里,爬取到的数据存不进MQSQL数据库,我在MYSQL里面已经建立了数据表: ``` mysql> CREATE TABLE `VERSION`( -> `index` INT, -> `code` INT, -> `name` VARCHAR(20) -> )ENGINE=InnoDB DEFAULT CHARSET=UTF8MB4; ``` 2、全部代码如下 ``` import requests from lxml import etree import pymysql import re class GovementSpider(object): def __init__(self): self.one_url = 'http://www.mca.gov.cn/article/sj/xzqh/2019/' self.headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36" } self.db = pymysql.connect('localhost', '***', ***', 'reptile_db', charset='utf8') self.cursor = self.db.cursor() # 提取二级页面链接(假链接) def get_false_link(self): html = requests.get(url=self.one_url, headers=self.headers).content.decode('utf-8', 'ignore') parse_html = etree.HTML(html) # xpath://a[@class='artitlelist'] r_list = parse_html.xpath("//a[@class='artitlelist']") for r in r_list: # 或者这么找title属性值 # title = r.get('title') title = r.xpath("./@title")[0] # 利用正则找到第一个自己需要的title里面的地址(第一个一般都是最新的) if re.findall(r'.*?中华人民共和国县以上行政区划代码.*?', title, re.RegexFlag.S): # 获取到第1个就停止即可,第1个永远是最新的链接 two_link = 'http://www.mca.gov.cn' + r.xpath('./@href')[0] return two_link # 提取真是的二级页面链接(返回数据的链接) def get_true_link(self): two_false_link = self.get_false_link() html = requests.get(url=two_false_link, headers=self.headers).text pattern = re.compile(r'window.location.href="(.*?)"', re.RegexFlag.S) real_link = pattern.findall(html)[0] self.get_data(real_link) # 真正提取数据函数 def get_data(self, real_link): html = requests.get(url=real_link, headers=self.headers).text # 基本xpath: //tr[@height="19"] parse_html = etree.HTML(html) tr_list = parse_html.xpath('//tr[@height="19"]') k=0 index=[] for tr in tr_list: # code: ./td[2]/text() code = tr.xpath('./td[2]/text()')[0] # name: ./td[3]/text() name = tr.xpath('./td[3]/text()')[0] print(code, name) k+=1 index.append(k) self.save_sql(index,code,name) def save_sql(self,index,code,name): n=0 for index in index: code=code[n].strip() name=name[n].strip() self.cursor.execute("insert into version(index,code,name) values (%s,%s,%s)",(index,code,name)) self.db.commit() n+=1; # 主函数 def main(self): self.get_true_link() self.cursor.close() self.db.close() if __name__ == "__main__": spider = GovementSpider() spider.main() ``` 3、数据能够爬取到,但存不进数据库,提示以下错误: pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index,code,name) values (1,'8','澳')' at line 1")
小白用python编写的爬虫小程序突然失效,是ip被封还是其他问题,求教?
# 编写的python小程序,爬取豆瓣评论,昨天还可以用,今天就失效了,试过很多种解决方法,都没有成功,求教? ## 可能的问题是ip被封或者cookies? 主程序 ``` # -*- coding: utf-8 -*- import ReviewCollection from snownlp import SnowNLP from matplotlib import pyplot as plt #画饼状图 def PlotPie(ratio, labels, colors): plt.figure(figsize=(6, 8)) explode = (0.05,0) patches,l_text,p_text = plt.pie(ratio,explode=explode,labels=labels,colors=colors, labeldistance=1.1,autopct='%3.1f%%',shadow=False, startangle=90,pctdistance=0.6) plt.axis('equal') plt.legend() plt.show() def main(): #初始url url = 'https://movie.douban.com/subject/30176393/' #保存评论文件 outfile = 'review.txt' (reviews, sentiment) = ReviewCollection.CollectReivew(url, 20, outfile) numOfRevs = len(sentiment) print(numOfRevs) #print(sentiment) positive = 0.0 negative = 0.0 accuracy = 0.0 #利用snownlp逐条分析每个评论的情感 for i in range(numOfRevs): # if sentiment[i] == 1: # positive += 1 # else: # negative += 1 print(reviews[i]+str(i)) sent = SnowNLP(reviews[i]) predict = sent.sentiments #print(predict,end=' ') if predict >= 0.5: positive += 1 if sentiment[i] == 1: accuracy += 1 else: negative += 1 if sentiment[i] == 0: accuracy += 1 #计算情感分析的精度 print('情感预测精度为: ' + str(accuracy/numOfRevs)) # print(positive,negative) #绘制饼状图 #定义饼状图的标签 labels = ['Positive Reviews', 'Negetive Reviews'] #每个标签占的百分比 ratio = [positive/numOfRevs, negative/numOfRevs] # print(ratio[0],ratio[1]) colors = ['red','yellowgreen'] PlotPie(ratio, labels, colors) if __name__=="__main__": main() ``` 次程序 ``` #!/usr/bin/python # -*- coding: utf-8 -*- from bs4 import BeautifulSoup import requests import csv import re import time import codecs import random def StartoSentiment(star): ''' 将评分转换为情感标签,简单起见 我们将大于或等于三星的评论当做正面评论 小于三星的评论当做负面评论 ''' score = int(star[-2]) if score >= 3: return 1 else: return 0 def CollectReivew(root, n, outfile): ''' 收集给定电影url的前n条评论 ''' reviews = [] sentiment = [] urlnumber = 0 headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.75 Safari/537.36','Connection': 'close','cookie': 'll="108303"; bid=DOSjemTnbi0; _pk_ses.100001.4cf6=*; ap_v=0,6.0; __utma=30149280.1517093765.1576143949.1576143949.1576143949.1; __utmb=30149280.0.10.1576143949; __utmc=30149280; __utmz=30149280.1576143949.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utma=223695111.1844590374.1576143949.1576143949.1576143949.1; __utmc=223695111; __utmz=223695111.1576143949.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); __utmt=1; __yadk_uid=iooXpNnGnHUza2r4ru7uRCpa3BXeHG0l; dbcl2="207917948:BFXaC6risAw"; ck=uFvj; _pk_id.100001.4cf6=4c11da64dc6451d3.1576143947.1.1576143971.1576143947.; __utmb=223695111.2.10.1576143949'} proxies = { "http":'http://121.69.46.177:9000',"https": 'https://122.136.212.132:53281'}#121.69.46.177:9000218.27.136.169:8085 122.136.212.132:53281 while urlnumber < n: url = root + 'comments?start=' + str(urlnumber) + '&limit=20&sort=new_score&status=P' print('要收集的电影评论网页为:' + url) # try: html = requests.get(url, headers = headers, proxies = proxies,timeout = 15) # # except Exception as e: # break soup = BeautifulSoup(html.text.encode("utf-8"),'html.parser') #通过正则表达式匹配评论和评分 for item in soup.find_all(name='span',attrs={'class':re.compile(r'^allstar')}): sentiment.append(StartoSentiment(item['class'][0])) #for item in soup.find_all(name='p',attrs={'class':''}): # if str(item).find('class="pl"') < 0: # r = str(item.string).strip() # reviews.append(r) comments = soup.find_all('span','short') for comment in comments: # print(comment.getText()+'\n') reviews.append(comment.getText()+'\n') urlnumber = urlnumber + 20 time.sleep(5) with codecs.open(outfile, 'w', 'utf-8') as output: for i in range(len(sentiment)): output.write(reviews[i] + '\t' + str(sentiment[i]) + '\n') return (reviews, sentiment) ``` ![图片说明](https://img-ask.csdn.net/upload/201912/12/1576149313_611712.jpg) 不设置参数proxies时错误如下:![图片说明](https://img-ask.csdn.net/upload/201912/12/1576149408_985833.jpg) 求教解决方法,感谢!!!!
python 爬虫 用xpath抓取多行文本,如何实现多重遍历?
萌新学习python爬虫,在爬取网贷之家平台信息的时候,通过xpath将某一平台的网友印象三个关键词保存在一个数组中,输出到excel中。 现在我希望能够把该页面上25个平台信息都爬取到并保存,请问xpath怎么写循环?这里的25个信息代码结构是一模一样的,只有li从[1]-[25]。谢谢 ``` import requests import pandas as pd from lxml import etree from fake_useragent import UserAgent ua = UserAgent() headers['User-Agent']=ua.random url = 'https://www.wdzj.com/dangan/search?filter=e1&currentPage=1' response = requests.get(url,headers = headers).text s = etree.HTML(response) file_yinxiang = [] file_yinxiang1 = s.xpath('//*[normalize-space(@id)="showTable"]/ul/li[1]/div[2]/a/div[5]/span/text()')#实现li从1-25的循环 file_yinxiang.append(file_yinxiang1) df = pd.DataFrame(file_yinxiang) df.to_excel('wdzj_p2p.xlsx') ``` 网上查了很多资料,并不是很清楚,目前不循环是这个结果: ![图片说明](https://img-ask.csdn.net/upload/201903/18/1552887724_381412.png) 这是网页上我要爬取的内容: ![图片说明](https://img-ask.csdn.net/upload/201903/18/1552887858_653935.png)
python爬虫 登陆不成功
![Request](https://img-ask.csdn.net/upload/201811/04/1541306099_578797.png) ![form data](https://img-ask.csdn.net/upload/201811/04/1541306066_962315.png) import json import urllib.error, urllib.request, urllib.parse import http.cookiejar s = requests.Session() class Login(object): def __init__(self): self.headers={ 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36', 'host':'gsms.csair.com', 'Origin':'https://gsms.csair.com', 'referer': 'https://gsms.csair.com/head-Login-login.gsms' } self.login_url='https://gsms.csair.com/head-Login-login.gsms' self.post_url='https://gsms.csair.com/j_spring_security_check' self.logined_url='https://gsms.csair.com/main_defaultmain.gsms' self.ajax_url='https://gsms.csair.com/ghc-ghchome-GhcHome-getUserInfo.gsms' def get_code(self): codeurl = 'https://gsms.csair.com/captcha.img' valcode = requests.get(codeurl) f = open('valcode.jpg', 'wb') f.write(valcode.content) f.close() code = input('请输入验证码:') return str(code) def login(self): post_data={ 'j_username':'228186', 'j_password':'*******', 'inputRand':self.get_code() } response = s.post(self.login_url, data=post_data, headers=self.headers) if response.status_code== 200: print('s') response = s.get(self.logined_url,headers=self.headers) if response.status_code== 200: print(response.text) if __name__== "__main__": login=Login() login.login()
请问我的Python爬虫代码 哪里出现了问题?(要求:爬取猫眼电影top100榜单的信息)
代码如下: ``` import requests from requests.exceptions import RequestException import time from bs4 import BeautifulSoup def get_one_page(url): try: headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'} response = requests.get(url,headers=headers) if response.status_code==200: return response.text return None except RequestException: return None def page(offset): url='http://maoyan.com/board/6?offset='+str(offset) return url for j in range(10): html_doc = get_one_page(page(j*10)) soup = BeautifulSoup(html_doc,'lxml') i = 1 for dd in soup.select("dd"): print(dd.find("i","board-index board-index-"+str(i+j*10)).get_text() +dd.find("p","name").get_text() +dd.find("p","star").get_text().strip() +dd.find("p","releasetime").string +dd.find("p","score").get_text()+'\n') i = i + 1 time.sleep(1) ``` 运行反馈结果为: ``` Traceback (most recent call last): File "<ipython-input-8-95f75b1c7bd0>", line 1, in <module> runfile('H:/程序语言学习用文件夹/Spider/beautifulSoup.py', wdir='H:/程序语言学习用文件夹/Spider') File "C:\Users\pc1\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile execfile(filename, namespace) File "C:\Users\pc1\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile exec(compile(f.read(), filename, 'exec'), namespace) File "H:/程序语言学习用文件夹/Spider/beautifulSoup.py", line 29, in <module> soup = BeautifulSoup(html_doc,'lxml') File "C:\Users\pc1\Anaconda3\lib\site-packages\bs4\__init__.py", line 192, in __init__ elif len(markup) <= 256 and ( TypeError: object of type 'NoneType' has no len() ```
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爬虫爬取猫眼电影Top100,每一页有10个电影,但是爬虫只能爬取第一个,后面都爬不到不止是为什么 代码如下,大神帮忙看看,感激不尽 import requests from requests.exceptions import RequestException import re def get_one_page(url): try: headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'} response=requests.get(url,headers=headers) if response.status_code==200: return response.text return None except RequestException: return None def parse_one_page(html): pattern=re.compile('<dd>.*?board-index-1">(\d+)</i>.*?data-src="(.*?)".*?/>.*?name"><a.*?>(.*?)</a>'+ '.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S) items=re.findall(pattern,html) print(items) def main(): url='http://maoyan.com/board/4?' html=get_one_page(url) parse_one_page(html) if __name__=='__main__': main() 结果显示 C:\Users\Administrator\python37\python.exe C:/Users/Administrator/PycharmProjects/Maoyantop100/spder.py [('1', 'https://p1.meituan.net/movie/20803f59291c47e1e116c11963ce019e68711.jpg@160w_220h_1e_1c', '霸王别姬', '\n 主演:张国荣,张丰毅,巩俐\n ', '上映时间:1993-01-01', '9.', '5')] Process finished with exit code 0
python爬虫爬都到的字符串写入mysql错误
``` for uri in urllist: headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36)"} response = requests.get(uri,headers=headers).text json_str = json.loads(response) aa=json_str['data'][0]['result'][0]['additional'] bb=json_str['data'][0]['result'][0]['ename'] cc=json_str['data'][0]['result'][0]['kg_pic_url'] cursor = db.cursor() sql = """insert into ady(score,name,PIC) VALUES ('+aa+','+bb+','+cc+')""" cursor.execute(sql) db.commit() ``` 写入到mysql里面 每一列都是 +aa+ +bb+ +cc+ 但是爬到的aa等字符串是可以打印出来的
在python爬虫中使用for循环填入网页id并嵌套函数爬取信息时,无法正确爬取
使用了三个网页ID:38635、38636、38627来测试,输出dic的结果为三个同样的字典(都对应38635), ``` headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} url='https://db.yaozh.com/hmap?grade=%E5%85%A8%E9%83%A8&p={}&pageSize=30&province=%E5%B9%BF%E4%B8%9C%E7%9C%81&type=%E5%85%A8%E9%83%A8' info_url_model='https://db.yaozh.com{}' for x in ['/hmap/38625.html', '/hmap/38626.html', '/hmap/38627.html']: #test info_url=info_url_model.format(x) #填入医院urlID detail = requests.get(info_url, headers=headers) # 取得内容页面内容 detail.encodint = 'utf-8' soup2 = BeautifulSoup(detail.text, 'html.parser') a = soup2.select('.toFindImg') for b in soup2.find_all(lambda tag: tag.name == 'span' and tag.get('class') == ['toFindImg']): item_list.append(b.text) for i in range(len(item_list)): #去掉空格 item_list[i] = item_list[i].replace(' ', '') #去掉空格 item_list[i] = item_list[i].replace('\n', '') #去掉换行符 dic = dict(zip(item_name, item_list)) # 生成字典 print(dic) ```
python爬虫问题求解,为什么总是验证码错误?
``` #coding=utf-8 from bs4 import BeautifulSoup import urllib2 import sys import time import requests from PIL import Image reload(sys) sys.setdefaultencoding('utf-8') time=time.localtime() session=requests.session() user_agent='Mozilla/5.0 (Windows NT 10.0; WOW64; rv:46.0) Gecko/20100101 Firefox/46.0' headers={'User-Agent':user_agent} cap_url='http://www.jsgsj.gov.cn:58888/mini/netWebServlet.json?randImg=true&tmp='+str(time) html=session.get(cap_url,headers=headers) img=html.content cookies=html.cookies with open('yanzhenma.jpeg','wb') as imgfile: imgfile.write(img) im = Image.open('yanzhenma.jpeg') im.show() yzm=raw_input() url_company='http://www.jsgsj.gov.cn:58888/mini/netWebServlet.json?codeCheck=true&corpName=苏州&yzm='+str(yzm) html=session.get(url=url_company,headers=headers,cookies=cookies) page=(html.text) print page ```
爬虫过程中遇到报错:ValueError: can only parse strings
源代码如下: import requests import json from requests.exceptions import RequestException import time from lxml import etree def get_one_page(url): try: headers = { 'User-Agent': 'Mozilla/5.0(Macintosh;Intel Mac OS X 10_13_3) AppleWebKit/537.36(KHTML,like Gecko) Chorme/65.0.3325.162 Safari/537.36' } response = requests.get(url,headers = headers) if response.status_code == 200: return response.text return None except RequestException: return None def parse_one_page(html): html_coner = etree.HTML(html) pattern = html_coner.xpath('//div[@id="container"]/div[@id="main"/div[@class = "ywnr_box"]//a/text()') return pattern def write_to_file(content): with open('results.txt','a',encoding='utf-8') as f: f.write(json.dumps(content,ensure_ascii=False)+'\n') def main(offset): url = 'http://www.cdpf.org.cn/yw/index_'+str(offset)+'.shtml' html = get_one_page(url) for item in parse_one_page(html): print(item) write_to_file(item) if __name__ == '__main__': for i in range(6): main(offset=i*10) time.sleep(1) 请问各位大佬到底是哪里出了错??
130 个相见恨晚的超实用网站,一次性分享出来
相见恨晚的超实用网站 持续更新中。。。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
对计算机专业来说学历真的重要吗?
我本科学校是渣渣二本,研究生学校是985,现在毕业五年,校招笔试、面试,社招面试参加了两年了,就我个人的经历来说下这个问题。 这篇文章很长,但绝对是精华,相信我,读完以后,你会知道学历不好的解决方案,记得帮我点赞哦。 先说结论,无论赞不赞同,它本质就是这样:对于技术类工作而言,学历五年以内非常重要,但有办法弥补。五年以后,不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
字节跳动视频编解码面经
三四月份投了字节跳动的实习(图形图像岗位),然后hr打电话过来问了一下会不会opengl,c++,shador,当时只会一点c++,其他两个都不会,也就直接被拒了。 七月初内推了字节跳动的提前批,因为内推没有具体的岗位,hr又打电话问要不要考虑一下图形图像岗,我说实习投过这个岗位不合适,不会opengl和shador,然后hr就说秋招更看重基础。我当时想着能进去就不错了,管他哪个岗呢,就同意了面试...
win10系统安装教程(U盘PE+UEFI安装)
一、准备工作 u盘,电脑一台,win10原版镜像(msdn官网) 二、下载wepe工具箱 极力推荐微pe(微pe官方下载) 下载64位的win10 pe,使用工具箱制作启动U盘打开软件, 选择安装到U盘(按照操作无需更改) 三、重启进入pe系统 1、关机后,将U盘插入电脑 2、按下电源后,按住F12进入启动项选择(技嘉主板是F12) 选择需要启...
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过...
Python——画一棵漂亮的樱花树(不同种樱花+玫瑰+圣诞树喔)
最近翻到一篇知乎,上面有不少用Python(大多是turtle库)绘制的树图,感觉很漂亮,我整理了一下,挑了一些我觉得不错的代码分享给大家(这些我都测试过,确实可以生成) one 樱花树 动态生成樱花 效果图(这个是动态的): 实现代码 import turtle as T import random import time # 画樱花的躯干(60,t) def Tree(branch, ...
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
将代码部署服务器,每日早上定时获取到天气数据,并发送到邮箱。 也可以说是一个小人工智障。 思路可以运用在不同地方,主要介绍的是思路。
致 Python 初学者
欢迎来到“Python进阶”专栏!来到这里的每一位同学,应该大致上学习了很多 Python 的基础知识,正在努力成长的过程中。在此期间,一定遇到了很多的困惑,对未来的学习方向感到迷茫。我非常理解你们所面临的处境。我从2007年开始接触 python 这门编程语言,从2009年开始单一使用 python 应对所有的开发工作,直至今天。回顾自己的学习过程,也曾经遇到过无数的困难,也曾经迷茫过、困惑过。开办这个专栏,正是为了帮助像我当年一样困惑的 Python 初学者走出困境、快速成长。希望我的经验能真正帮到你
Ol4网格生成以及优化
概述 先描述一下大致场景:以0.05为单元格大小生成网格,并在地图上绘制,绘制的时候需要区分海陆。本文以此需求为契机,简单描述一下该需求的实现以及如何来优化。 效果 实现 优化前 var source = new ol.source.Vector({ features: [] }); var vector = new ol.layer.Vector({ source...
11月19日科技资讯|华为明日发布鸿蒙整体战略;京东宣告全面向技术转型;Kotlin 1.3.60 发布
「极客头条」—— 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。扫描上方二维码进入 CSDN App 可以收听御姐萌妹 Style 的人工版音频哟。 一分钟速览新闻点! 6G 专家组成员:速率是 5G 的 10 至 100 倍,预计 2030 年商用 雷军:很多人多次劝我放弃WPS,能坚持下来并不是纯粹的商业决定 ...
C语言魔塔游戏
很早就很想写这个,今天终于写完了。 游戏截图: 编译环境: VS2017 游戏需要一些图片,如果有想要的或者对游戏有什么看法的可以加我的QQ 2985486630 讨论,如果暂时没有回应,可以在博客下方留言,到时候我会看到。 下面我来介绍一下游戏的主要功能和实现方式 首先是玩家的定义,使用结构体,这个名字是可以自己改变的 struct gamerole { char n...
iOS Bug 太多,苹果终于坐不住了!
开源的 Android 和闭源的 iOS,作为用户的你,更偏向哪一个呢? 整理 | 屠敏 出品 | CSDN(ID:CSDNnews) 毋庸置疑,当前移动设备操作系统市场中,Android 和 iOS 作为两大阵营,在相互竞争的同时不断演进。不过一直以来,开源的 Android 吸引了无数的手机厂商涌入其中,为其生态带来了百花齐放的盛景,但和神秘且闭源的 iOS 系统相比,不少网友...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库 回到首页 目录: Python语言高频重点汇总 目录: 1. 函数-传参 2. 元类 3. @staticmethod和@classmethod两个装饰器 4. 类属性和实例属性 5. Python的自省 6. 列表、集合、字典推导式 7. Python中单下划线和双下划线 8. 格式化字符串中的%和format 9. 迭代器和生成器 10...
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip installselenium -ihttps://pypi.tuna.tsinghua.edu.cn/simple/ ...
程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
程序员该看的几部电影
1、骇客帝国(1999) 概念:在线/离线,递归,循环,矩阵等 剧情简介: 不久的将来,网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂,并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他,现实世界其实是由一个名叫“母体”的计算机人工智能系统控制,人们就像他们饲养的动物,没有自由和思想,而尼奥就是能够拯救人类的救世主。 可是,救赎之路从来都不会一帆风顺,到底哪里才是真实的世界?如何...
蓝桥杯知识点汇总:基础知识和常用算法
文章目录基础语法部分:算法竞赛常用API:算法部分数据结构部分 此系列包含蓝桥杯绝大部分所考察的知识点,以及真题题解~ 基础语法部分: 备战蓝桥杯java(一):一般输入输出 和 快速输入输(BufferedReader&amp;BufferedWrite) 备战蓝桥杯java(二):java编程规范和常用数据类型 备战蓝桥杯java(三):常用功能符以及循环结构和分支结构 备战蓝桥杯java(四...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东...
@程序员,如何花式构建线程?
作者 |曾建责编 | 郭芮出品 | CSDN(ID:CSDNnews)在项目和业务的开发中,我们难免要经常使用线程来进行业务处理,使用线程可以保证我们的业务在相互处理之间可以保证原子性...
破14亿,Python分析我国存在哪些人口危机!
一、背景 二、爬取数据 三、数据分析 1、总人口 2、男女人口比例 3、人口城镇化 4、人口增长率 5、人口老化(抚养比) 6、各省人口 7、世界人口 四、遇到的问题 遇到的问题 1、数据分页,需要获取从1949-2018年数据,观察到有近20年参数:LAST20,由此推测获取近70年的参数可设置为:LAST70 2、2019年数据没有放上去,可以手动添加上去 3、将数据进行 行列转换 4、列名...
实现简单的轮播图(单张图片、多张图片)
前言 刚学js没多久,这篇博客就当做记录了,以后还会完善的,希望大佬们多多指点。ps:下面出现的都是直接闪动,没有滑动效果的轮播图。 单张图片的替换 · ...
强烈推荐10本程序员在家读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Linux自学篇——linux命令英文全称及解释
man: Manual 意思是手册,可以用这个命令查询其他命令的用法。 pwd:Print working directory 意思是密码。 su:Swith user 切换用户,切换到root用户 cd:Change directory 切换目录 ls:List files 列出目录下的文件 ps:Process Status 进程状态 mkdir:Make directory ...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
疫情数据接口api
返回json示例 { "errcode":0,//0标识接口正常 "data":{ "date":"2020-01-30 07:47:23",//实时更新时间 "diagnosed":7736,//确诊人数 "suspect":12167,//疑是病例人数 "death":170,//死亡人数 "cur...
相关热词 c#开发的dll注册 c#的反射 c# grid绑定数据源 c#多线程怎么循环 c# 鼠标左键 c# char占位符 c# 日期比较 c#16进制转换为int c#用递归求顺序表中最大 c#小型erp源代码
立即提问