从Python中的列表访问URL

时间:2015-05-04 11:56:40

标签: python

我正在尝试在HTML文档中搜索文章链接,将它们存储到列表中,然后使用该列表分别搜索每个文章的标题。

2 个答案:

答案 0 :(得分:1)

它可能不是OP的直接答案,但不应被视为偏离主题:您不应该解析html数据的网页

html网页未针对大量请求进行优化,尤其是来自浏览器的请求。大量生成的流量可能导致服务器过载并触发DDOS。

因此,您需要尝试找到任何可用的API以使您的网站感兴趣,并且只有在找不到相关内容的情况下,使用使用请求缓存来解析Web内容以不使目标资源超载。

第一眼看,The GuardianOpen API documentation如何使用。

使用该API,您可以以简单的方式处理网站内容,使您更有趣地处理有趣的请求,并且无需解析即可获得答案。

例如,按标签搜索"技术" api output

from urllib.request import urlopen, URLError, HTTPError
import json
import sys

def safeprint(s):
  try:
    print(s)
  except UnicodeEncodeError:
    if sys.version_info >= (3,):
      print(s.encode('utf8').decode(sys.stdout.encoding))
    else:
      print(s.encode('utf8'))


url = "http://content.guardianapis.com/search?q=technology&api-key=test"

try:
  content = urlopen(url).read().decode("utf-8")
  json_data = json.loads(content)
  if "response" in json_data and "results" in json_data["response"]:
    for item in json_data["response"]["results"]:
      safeprint(item["webTitle"])
except URLError as e:
  if isinstance(e, HTTPError):
    print("Error appear: " + str(e))
  else:
    raise e

使用这种方式,你可以毫不费力地浏览所有出版物。

答案 1 :(得分:-1)

只需使用/** * @Route("/cart/update", name="cart_update") */ public function cartUpdateAction( Request $request ) { $response = new JsonResponse(); $requestData = $request->request->all(); $productid = $requestData['product'];/** first put all validations not empty/ is numeric and exists in your db etc*/ $quantity = $requestData['quantity'];/** first put all validations not empty/ is numeric etc */ /** if all is good then put your logic*/ $product = $em->getRepository('MpShopBundle:Product')->find($productid); $qtyAvailable = $product->getStock(); $session = $this->getRequest()->getSession(); $cart = $session->get('cart', array()); if ( $qtyAvailable > $cart[ $productid ] ) { $cart[ $productid ] = $cart[ $productid ] + 1; $response->setData(array('success'=>true,'message'=>'Qunatity increased')); } else { $response->setData(array('success'=>false,'message'=>'Out of stock')); } return $response; } 解析HTML并在每个页面中找到标题标记:

{% block javascripts %}

            {# Le Javascript #}         
                {% javascripts 


                    'bundles/mpFrontend/assets/js/jquery-1.11.2.min.js'         
                    'Mp/ShopBundle/Resources/js/scripts.js'   
                    %}      
                    <script src="{{ asset_url }}"></script>       
                {% endjavascripts %}